RTTI

来源:互联网 发布:kali sql 注入点 扫描 编辑:程序博客网 时间:2024/05/19 07:08

1对于带虚函数的类,在运行时执行RTTI,其它,则是在编译是计算RTTI操作符

2:RTTI提供了两个运算符

主要是两个:

一个是:typeid运算符,可以是指针,引用或者对象都可以

           typeid(表达式).name

对于类中有virtual,当表达式为NULL的时候,会抛出异常

#include <map>class Base{public:virtual void pp(){}};class Dev:public Base{};int _tmain(int argc, _TCHAR* argv[]){Base *bb = NULL;try{cout << typeid(*bb).name();}catch(bad_typeid){cout << "bad_typeid" ;}return 0;}

结果:bad_typeid

第二个:dynamic_cast

若类不存在virtual,则不能将父类转换成子类,转换会提示语法错误,加上一个virtual就ok了

若存在,则可以

原创粉丝点击