VC语言

本类阅读TOP10

·VC++下使用ADO编写数据库程序
·VC++ 学习笔记(二)
·Windows消息大全
·每个开发人员现在应该下载的十种必备工具
·在2000和xp下,隐藏进程,VC6.0测试通过!!!
·用Visual C++打造IE浏览器(1)
·Netmsg 局域网聊天程序
·教你用VC6做QQ对对碰外挂程序
·VC++学习笔记(四)
·VC++中经常使用的函数!~~

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
thinking in c++卷2

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

RTTI机制和开销

典型地,RTTI通过在类的虚函数表中放置一个额外的指针来实现。这个指针指向那个特殊类型的type_info结构typeid( )表达式的结果是很简单的:虚函数表指针取出type_info指针,以及一个指向产生的结果type_info结构的引用。因为这只是一个双指针解除引用操作,它是一个常量时间操作。

对一个dynamic_cast<destination*>(source_pointer),大多数情况是很直接了当的:source_pointerRTTI信息被检索到,以及对类型destination*RTTI信息被取出。以后库路径就决定source_pointer类型是否是类型destination*或者destination*的基类。如果基类型不是派生类型的第一个基,由于多重继承返回的指针就可能被调整过了。因为在继承层次里基类型可能出现不止一次和用到虚拟基类,有多重继承的情况就更加复杂。

因为对dynamic_cast使用的库路径必须从基类的列表里搜索,dynamic_cast的开销可能高于typeid( )(但是你得到了不同的信息,可能是你的解决办法的基石),以及比起派生类可能花去较多的时间来找到基类。另外,dynamic_cast将一些类型和另外其他类型相比较,并没有限制你必须在同一个类层次里对比类型。使用dynamic_cast这就给库路径加入了额外的开销。

 

    请继续关注.有问题请联系我!

  QQ 31877784

 邮件 whlkw@tom.com

 读者反映好可以继续翻译,共同进步。




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有