64,654
社区成员
发帖
与我相关
我的任务
分享
// A类只有接口,B,C均没有重写函数fun,知道A有运行时类信息的封装
class A
{
public:
virtual void fun(){ /*Do someting */ }
};
class B :public A{ };
class C: public A{ };
int main()
{
B *pB = new B;
C *pC = new C;
pB->fun();
pC->fun();// the result is diffrent from pB->fun();
}
class B;
class C;
class A
{
public:
virtual void fun();
};
class B :public A{ };
class C: public A{ };
void A::fun()
{
B *pb = dynamic_cast<B*>(this);
if (pb != NULL)
{
printf("class B\n");
}
C *pc = dynamic_cast<C*>(this);
if (pc != NULL)
{
printf("class C\n");
}
}
int main()
{
B *pB = new B;
C *pC = new C;
pB->fun();
pC->fun();// the result is diffrent from pB->fun();
}
class A
{
public:
virtual void fun(){ /*Do someting */ }
};
class B :public A{ };
class C: public A{ };
int main()
{
A *pA1 = new B;
A *pA2= new C;
printf("%s",typeid(*pA1).name());
printf("%s",typeid(*pA2).name());
}
没试过不保证对
另,别纠结这些东西了,你知道dynamic_cast<&A::fun>( pA1->vptr[1])是个什么东西吗?