통과 가치를 const 참조 매개 변수는?
문제
지 않았습니다 비슷한 질문에 여기에,또는 Google 을 통해 어쩌면 알 수 없기 때문에 나면 오른쪽 질문,그래서 확실하지 않는 경우 제목은 옳습니다.하지만 나는 코드는 다음과 같습니다.
Foo * foo = new Foo();
add(*foo); //Couldnt find any similar questions on this syntax?
void add(const Foo & foo){
//What exactly is foo here? How can i manipulate its members, foo. or foo-> ?
}
해결책
변수 foo
안 add
방법은 상수 참조.그것처럼 동작하는 포인터에서 의미하지 않는다는 사본을 개체:당신은 그것과 상호 작용된 것처럼 보이지만 실제로는 객체에 자체입니다.과는 달리,포인터를 참조할 수 없 NULL
, 며,그것은 다시 지정할 수 없습니다.당신은 상호 작용과 함께 사용하여 그것을 점 .
연산자를 대신에 ->
연산자입니다.
void add(const Foo & foo){
cout << foo.first_member << endl;
foo.const_member_function();
}
이 foo
지속적인 참조를 읽을 수 있습니다 foo
의 멤버,하지만 당신은 할당할 수 없습니다.또한,어떤 통화의 멤버 기능 foo
참조한 기능을 명시적으로 표시 const
.
전화 add
와 역참조 foo
OK,로 foo
지 NULL
.기에 참조 참조로 인해 NULL
포인터가 정의되지 않은 행동이다.
다른 팁
'foo' is a constant reference. You can access its members via foo.fred, foo.method(), etc., but you can't change any data members or call any non-const methods.
제휴하지 않습니다 StackOverflow