A *a = new A;
B *b = new B;
b = (B*)a;
Derived class 포인터로 Base class 포인터를 다운캐스팅하여 할당해도
Derived class만의 함수들을 사용할 수 있는거야?
내 상식선에서는 말이 안되는데..
a는 new B가 아닌 new A를 할당한건데
a는 A클래스만을 위한 것이고 이걸 B로 다운캐스팅한다고해서 B의 함수들을 사용할 수 있는거야?
b->output(); 이거 컴파일 오류나 런타임 오류 날줄 알았는데 정상 출력된다.
이게 왜 맞는지 이해좀 시켜줄 수 없니?
원래 다운캐스팅이라는게
A *a = new B;
B *b = (B*)a; 이럴때 쓰라고 있는거 아니야?
구글에 검색해도 안 나오더라 ㅠㅜ.
C++에선 그렇게 캐스팅 하는 거 아냐 그건 C 방식이고
다운 캐스팅을 보통 dynamic_cast나 reinterpret_cast 로 하는데, 제일 좋은건 다이나믹 캐스트 자체를 안 하는거 - return 0;