안선생의 개발 블로그
C++ 다형성 본문
다형성 , 가상함수(virtual)
부모 포인터 타입으로, 부모 클래스로부터 파생되는 자식클래스 객체들의 주소를 가리킬 수 있다.
모든 객체를 부모 클래스 타입으로 인식하게 되기 때문에, 실제 객체가 무엇인지 알 수 없다.
자식의 함수가 호출 될줄알았지만 부모 함수가 호출됨
해결방안
virtual 키워드를 통해서, 각 클래스는 자신만의 고유한 가상함수 테이블을 가지게 된다.
가상함수를 붙여줌으로써 각 클래스의 객체들은 가상함수 테이블 포인터에서 해당 클래스에 맞는 테이블을 가리키게 된다.
그 테이블에는 해당 클래스의 가상함수들이 등록
다시 실행하면 자식 함수가 실행됨
다운 캐스팅
부모 클래스에서 선언되지 않은, 오직 자식쪽에서만 추가된 함수를 호출 하고 싶을 떄
자식 포인터타입으로 일시적으로 캐스팅 해서 호출한다.
문제가 발생 할 수 있기 때문에 dynamic_cast로 안전하게 확인해 볼 수 있다.
RRRI(RTun Time Tpye Idetification or Information)
'C++' 카테고리의 다른 글
문자열 대소문자 변경 (0) | 2022.10.10 |
---|---|
2차원배열 동적할당 (0) | 2022.10.02 |
C++ 오버라이딩 (0) | 2022.09.22 |
C++ 상속 (1) | 2022.09.21 |
C++ 이진 탐색 트리 구현 (0) | 2022.09.18 |