예전에 typeid 포스팅을 한 적이 있습니다. (http://moltak.net/search/typeid) 참조
열심히 플젝을 하던 중 원하는 결과값이 안나와서 왜 그런가 하고 한시간 가량 삽질 끝에 알아 냈네요.;;
위 포스팅을 보시면 typeid( type ).name()을 통해서 type의 이름을 얻어 오는 것이 있습니다.
.name() 함수가 현재 타입을 알려주는 역할을 하죠.
저는 아래와 같이 사용하고 있었습니다.
다들 아시겠지만 우리가 원하는 결과는?? 젤 아래 결과가 당연히 Sub가 나와야 맞습니다.
하지만 그렇지 않더군요. 결과를 먼저 볼까요?
위와 같이 전부 Super 클래스가 나왔네요?? 왜 그런걸까요? 제가 잘 못했겠죠?? 아직 확실한 이유는 모르지만 결과를 올바르게 바꾸는 방법은 알아 냈습니다.
바로 위 소스와 같이 사용하지 않는 하나의 함수를 집어 넣는 것입니다. C++은 상속을 받았을 때, 가상함수 테이블이 생기게 됩니다. typeid는 클래스의 경우 가상함수 테이블을 보고 type을 결정짓지 않나 생각이 드네요.
정확히 아시는 분은 알려주세요. ㅠㅠ 기다리겠습니다. ㅋㅋ
Bloger: moltak.net
'Programming > 이것저것' 카테고리의 다른 글
Doxygen - 작성중 (0) | 2011.03.08 |
---|---|
_Crt Debug Functions (0) | 2010.07.23 |
세그먼트 레지스터 (0) | 2010.05.01 |
x86 Register (0) | 2010.04.30 |
어셈블리어 점프 명령어 (0) | 2010.04.29 |