클래스 C가 클래스 B에서 상속 받으면 A.에 정의 된 가상 함수를 재정의한다고 가정합니다. C는 함수를 재정의하지 않습니다. A * 타입의 포인터가 C 타입의 객체를 가리킬 때, 함수 호출은 B에서 오버라이드 된 버전을 사용할 것인가?다단계 상속 C++
3
A
답변
5
예!
의미 상으로, C
은 암시 적으로 B
에서 구현을 상속받습니다.
구체적으로 호출되는 가상 함수의 구현은 가장 많이 파생 된 사용 가능한 함수입니다.
2
유형 A의 포인터가 유형 C의 객체를 가리키면 함수 호출이 B에서 재정의 된 버전을 사용합니까?
예. 당신이 봤어 당신이 경우 C에서 가상 함수를 구현하지 않는
0
예 함수 호출, B에서 재정의 된 버전을 사용, 함수 호출은 C.
이 될 것입니다? –
@ChristianHackl 나는 이런 종류의 겉보기에 간단한 질문을 무시하는 것을 조심스럽게 생각합니다. C++에는 UB가 작동하는 것처럼 보일 수도 있지만 실제로 그렇지 않은 경우가 많습니다. 물어 보지 않아도됩니다. – Quentin
@Quentin : 예, 아니오. 더 나은 질문은 * "시도했을 때 그것을 부르지 만 그 행동을 보장합니까?"* * 그대로, 질문은 거의 나에게 숙제를 준 것처럼 보입니다. –