在由基类到子类转换的时候,为了判断子类的类型,可以用这个
class A{
};
class B : public A{
};
class C: public A{
};
如果你有一个A * p的指针,你想得到一个B类型的或者是C类型的指针
B * b = dynamic_cast<B*>(p);
若b为NULL,则p不是B类型的。
class A{
};
class B : public A{
};
class C: public A{
};
如果你有一个A * p的指针,你想得到一个B类型的或者是C类型的指针
B * b = dynamic_cast<B*>(p);
若b为NULL,则p不是B类型的。
解决方案 »
- WSAAsyncSelect函数编译老是提示出现错误?
- VC6 无法调用ActiveX DLL的问题。
- 牛逼的人进来看看,暴难的界面设计, 估计你也不会
- 如何将button上的字体变成超链接状态的文字,而且是蓝色
- 用vc的console建立的服务器端,实现与多个客户端通信的问题??
- 关于对话框的问题
- 有没有VC++操作注册表的介绍和例子呀?
- 刚开论坛,大家去支持一下,同时招新版主..........
- ★★★会该死的DirectX的来报个名!★★★大家一起努力交流!★★★
- 写bat文件//要先写一些开头指令吗?
- VC中的一个问题
- 请教高手,如何让编译出的lib可以不再需要lib工程中用到的dll文件?
最典型的应用就是MFC中的RUNTIMECLASS机制,当需要由框架动态创建和管理窗口时这个机制才有效,比如文档-视图模型中,你只需要设置文档模板,文档类、MDI子窗口类、VIEW类将被框架来动态创建。
而只有类声明了virtual函数或者其某个基类中有virtual函数,
该类才会有虚函数表楼上的例子,类A的函数中,必须至少一个声明为virtual对于typeid的使用,也必须打开编译器的RTTI设置
如:typeid(b) == typeid(B)
判断对象b是否为于类B的对象