강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

harypoteck님의 프로필 이미지
harypoteck

작성한 질문수

홍정모의 따라하며 배우는 C++

12.3 override, final, 공변 반환값

공변 반환값 관련 질문 있습니다

작성

·

271

8

8:10 에서 b의 포인터를 내부적으로 a 포인터로 바꿔서 print()를 호출한다고 하셨는데,

ref의 자료형은 A지만 A의 getThis() 는 virtual 이므로 B의 포인터가 반환되었고,

B의 print()를 호출하려 했지만 A의 print()가 virtual 이 아니라서 B 대신 A의 print()가 호출된 게 맞나요?

퀴즈

C++에서 부모 클래스 포인터나 참조로 자식 클래스 객체의 고유한 메서드를 호출 가능하게 만드는 핵심 메커니즘은 무엇일까요?

정적 바인딩

객체 슬라이싱

가상 함수

오버로딩

답변 1

4

네! B 포인터를 리턴했더라도 이를 호출한 주체자가 A타입인 ref 이기 때문에 A의 print()가 호출됩니다. 근데 A의 print()는 가상함수가 아닌 일반 함수이므로 A의 print()가 호출됩니다. 

harypoteck님의 프로필 이미지
harypoteck

작성한 질문수

질문하기