안선생의 개발 블로그

C++ 다형성 본문

C++

C++ 다형성

안선생 2022. 9. 22. 00:02

 

다형성 , 가상함수(virtual)


부모 포인터 타입으로, 부모 클래스로부터 파생되는 자식클래스 객체들의 주소를 가리킬 수 있다.

 

모든 객체를 부모 클래스 타입으로 인식하게 되기 때문에, 실제 객체가 무엇인지 알 수 없다.

자식의 함수가 호출 될줄알았지만 부모 함수가 호출됨

 

해결방안

virtual 키워드를 통해서, 각 클래스는 자신만의 고유한 가상함수 테이블을 가지게 된다.

 

가상함수를 붙여줌으로써 각 클래스의 객체들은 가상함수 테이블 포인터에서 해당 클래스에 맞는 테이블을 가리키게 된다.
그 테이블에는 해당 클래스의 가상함수들이 등록

다시 실행하면 자식 함수가 실행됨

 

다운 캐스팅
부모 클래스에서 선언되지 않은, 오직 자식쪽에서만 추가된 함수를 호출 하고 싶을 떄
자식 포인터타입으로 일시적으로 캐스팅 해서 호출한다.
문제가 발생 할 수 있기 때문에 dynamic_cast로 안전하게 확인해 볼 수 있다.
RRRI(RTun Time Tpye Idetification or Information)

 

출처 : https://www.youtube.com/c/AssortRockGameAcademy

'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