C++中的rtti

转自http://hi.baidu.com/liyunfeng6666/blog/item/964d822a6af8dce299250a1b.html

RTTI机制运行时确定类对象的类型。。。

1,虚函数,--从写标识自己的函数--基类调用--通过结果多态--

2,typeid操作符,---添加#include <typeinfo>,typeid()会生产一个type_info类的信息,可以调用name()输出类型的名子,判断选择typeid(value) == typeid(value)来判断,对象和类名字。

可能v6运行时出现问题用到typeid的时候遇到这种警告,运行的时候就会出现致命错误:

解决方法:在vc6中. /Project - settings... - C/C++ /在Category那里选 C++ Language /再在下边勾上 Enable Run-Time Type 

3,下转型时用,运用dynamic_cast,如果转化不成功返回0

  因为RTTI(typeid和dynamic_cast都是RTTI的一部分)大部分都是要利用virtual      table来实现的,比如在virtual      table的第0个索引处存放指向type_info信息的指针。所以如果没有virtual      function,那么此class就没有virtual      table,所以RTTI也自然就不能正常运行了(那么typeid也就自然不能够正常运行了,而只能根据编译时期的静态类型来进行判断)。

if (x=dynamic_cast<aa*>(b))

原文链接: https://www.cnblogs.com/lichengman/archive/2011/10/19/2218213.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中的rtti

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/34660

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午11:33
下一篇 2023年2月8日 上午11:33

相关推荐