2017-02-09 2 views
0

가상 함수를 사용하기 위해 포인터에 대한 참조를 전달하고 있습니다.포인터에 대한 참조 전달

옵션 1은 내가 의도 한 바를 수행하고 적절한 파생 클래스 가상 함수를 호출합니다. 옵션 2는 참조가 전달되지 않았다고 제안하지 않습니다. 이 컴파일 이후, 참조로 전달하지 않으면 &이 컨텍스트에서 의미는 무엇입니까?

1. 
Derived aDerived; 
Derived *pDerived = &aDerived; 

2. 
Derived *pDerived = &Derived(); 
+3

옵션 2 ++ 표준 C에서 컴파일되지해야합니다. 또한 여기에 포인터에 대한 참조를 전달하지 않습니다. – juanchopanza

+2

왜 가상 함수를 사용하기 위해 포인터에 대한 참조를 전달해야합니까? – tadman

+1

첫 번째 예에서 '&'는'주소 - 오브 (address-of) '연산자이며, 참조와는 아무런 관련이 없습니다. – Barmar

답변

1

옵션 2에서는 rvalue의 주소를 사용하려고합니다. 이것은 컴파일에 실패한다 :

error: lvalue required as unary ‘&’ operand

Check this live example.

+0

감사합니다. VS 경고 수준을 4로 개정했으며 기본적으로 언급 한 내용을 보여주었습니다. – cafekaze

관련 문제