Virutal Function 관련 질문
글쓴이: yjc99 / 작성시간: 수, 2007/09/12 - 6:22오후
interface ITest1
{
virtual void Test1()=0;
};
interface ITest2
{
virtual void Test2()=0;
};
class Test : public ITest1 , public ITest2
{
virtual void Test1();
virtual void Test2();
};
void Test::Test1() {
TRACE0("here1");
}
void Test::Test2() {
TRACE0("here2");
}
////
Test *pTest = new Test;
ITest1 *pITest1 = reinterpret_cast(static_cast(pTest));
pITest1->Test1();
위 코드에서 pITest1->Test1(); 실행하면 결과는?
Test2()가 호출됩니다.
동작이유는 동적으로 Virtual Table 을 찾기때문인것쯤(?)으로 이해되는데, 정확하게 이해하지를 못하겠습니다.
아시는 분 계시면, 가르쳐주시면 감사하겠습니다.^
Forums:
아래 코드가
아래 코드가 맞는건가요?
reinterpret_cast 까지 사용해야 하는지 모르겠습니다만,
의도한게 아래와 같은 것이라는 가정에서 테스트본 결과 here1 이 출력됩니다.
VS 2005 Express로 테스트했습니다.
=================================
나비아빠
=================================
나비아빠
죄송하지만;;
질문게시판으로 가야하지 않을까요;;
질문게시판으로 옮겼습니다.
질게로 옮깁니다.
참고로 꺽쇠를 띄어쓰지 않으면 표시가 안되네요. ㅜ.ㅜ
ITest1 *pITest1 = reinterpret_cast< ITest2* >(static_cast< ITest1* >(pTest)); 입니다.