首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > More Effective C++之24
【标  题】:More Effective C++之24
【关键字】:More,Effective,C++
【来  源】:http://blog.csdn.net/hanyu1980/archive/2006/06/19/814132.aspx

More Effective C++之24

条款24:了解virtual functions、multiple inheritance、virtual base classes、runtime type identification的成本
Vtbl是virtual tables、vptrs是virtual table pointers。这在《Inside C++ Object Model》里面有很详尽的描述,所以不需要这里多写什么。《Inside C++ Object Model》有相关性能测试报告,可以作为参考。当我们将虚函数声明成inline的时候,往往不要抱有幻想,编译器往往会忽略,因为如果这一设定生效,如果所有虚函数都是inline,那如何生成vtbl?而且inline是编译期行为,virtual是执行期行为。所以要不inline,要不virtual。
多重继承其实并不是好的抽象办法,我最痛恨的一个特性。建议除非天塌下来,否则不要用。这样也可以同时回避virtual base classes。runtime type identification并不是常用的特性,相对而言,这可以忽略,只要VC6默认就是不支持的。
总结起来说,virtual functions、multiple inheritance、virtual base classes、runtime type identification都是需要代价的,我的观点是除非必要,否则不用。
指针和数组关系初探:【上一篇】
在mfc编程中创建web风格的图形用户界面(四):【下一篇】
【相关文章】
  • C++ template 语法需要注意的问题!
  • C/C++进阶[5]
  • More Effective C++之25
  • Effective STL目录
  • More Effective C++之26
  • C/C++ 语言中结构体的内存分配
  • 打造自己的专业图像工具-Visual C++ 2005图像编程系列【二】
  • 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
  • c++常用技巧集
  • 用C实现C++的多态---剖析GTK的"对象" (三)
  • 【随机文章】
  • linux配置文件详解
  • Web服务最佳实践(翻译)
  • 7000美金等着你去拿!
  • Cross Frame Script (跨框架脚本) 攻击
  • 结构体成员的灵活运用
  • 应用JDOM处理数据库到XML转换的JSP实现 (二)
  • 借火车看设计过程
  • glogal.asa实现定时运行asp程序
  • PHP与SQL注入攻击[二]
  • 跨浏览器的设置innerHTML方法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.