@ 16. 1 ~ 17. 1/Effective C++

항목 36 : 상속받은 비가상 함수를 파생클래스에서 재정의하지말것

namoeye 2015. 1. 25. 23:27

왜냐면

비가상 함수는 가려지기 때문이다.

 

예를 들어

기본클래스 *ptr=new 파생클래스

일 경우...

ptr은 기본클래스에 대한 포인터 타입으로 선언되었기 때문에

ptr을 통해 호출되는 비가상 함수는 항상 기본클래스에 정의되어 있을 것이라고 결정해 버린다.

심지어 기본클래스에서 파생된 파생클래스 객체를 가리키고 있다 해도 마찬가지다.

(가상함수와 반대로 객체를 가리키는 포인터 타입에 따라 좌우된다..

가상함수는 실제 객체죠?? ㅎ)