【C/C++】【类和对象】RTTI和虚函数表
2021-04-12 18:28
标签:rtu 编译器 ESS 运算 vat code dba 静态 ide Run Time Type Identification:运行时类型识别;通过运行时类型识别,程序能够使用基类的指针或引用来检查这些指针或引用所指向的对象的实际派生类型。 主要是通过两个运算符来实现的: typeid会返回一个常量对象的引用,这个常量对象是一个标准库类型type_info(类/类类型); typeid就返回一个常量对象的引用,这个常量对象是一个标准库类型type_info(类/类类型) 【C/C++】【类和对象】RTTI和虚函数表 标签:rtu 编译器 ESS 运算 vat code dba 静态 ide 原文地址:https://www.cnblogs.com/Trevo/p/13343848.htmlRTTI是什么
Human *phuman = new Men;
Human &q = *phuman;
注意:
要想让1和2正常工作,那么基类中必须至少有一个虚函数,否则这两个运算符的结果可能跟我们预想的不一样;因为只有虚函数的存在,这两个运算符才会使用指针或者引用所绑定的对象的动态类型(new的类型);dynamic_cast
指针,如果转换成功,说明这个指针实际上是要转换到的那个类型;会做安全检查;
#include
引用,如果用dynamic_cast转换失败,系统会抛出一个std::bad_cast异常;
#include
typeid运算符
typeid(类型[指针/引用]/表达式);//得到对象类型信息
#include
type_info类
#include
RTTI与虚函数表
int main()
{
Human* phuman = new Men;
const type_info& tp = typeid(*phuman);
//phuman对象里有一个指针,指向这个对象所在的类Men里的虚函数表
return 0;
}
上一篇:C语言基础
下一篇:Python中的深拷贝和浅拷贝
文章标题:【C/C++】【类和对象】RTTI和虚函数表
文章链接:http://soscw.com/index.php/essay/74839.html