2
void f(vector<object> *vo) {
}
이 그리고 내가
vector<object> vo;
f(&vo);
이 어떻게와 push_back을 사용() 벡터에 추가하는 f를하는 벡터의 주소를 전달하는 경우? 포인터 역 참조
void f(vector<object> *vo) {
}
이 그리고 내가
vector<object> vo;
f(&vo);
이 어떻게와 push_back을 사용() 벡터에 추가하는 f를하는 벡터의 주소를 전달하는 경우? 포인터 역 참조
(I 포인터에 새로운 해요) :이 언어의 기본 개념이다
(*vo).push_back(object());
vo->push_back(object()); // short-hand
주, 당신은 good book을 읽는 혜택을 누릴 수 있습니다.
f(0); // oops, dereferenced null; undefined behavior (crash)
가 올바르게 모든 유효한 포인터 값을 (예, 널 (null)이 유효한 값) 처리 할 필요가, 함수가 안전하게하려면 :
참고이 눈부신 단점이있다.
void f(vector<object>& vo) // *must* reference a valid object, null is no option
{
vo.push_back(object()); // no need to dereference, no pointers; a reference
}
이제 무거운 짐이 유효한 참조를 제공하기 위해 함수의 호출에 : 참조를 사용하여
if (!vo) return;
// or:
if (!vo) throw std::invalid_argument("cannot be null, plz");
또는 함수는 본질적으로 올바른합니다 어느 어떤 종류의 검사를 추가 .
+1은 4 초 빠릅니다. –
나는 개인적으로 먼저 참고 문헌을 제안 할 것이지만, 둘 다 보여주기 위해서는 +1을 제안 할 것이다. – Puppy