More Effective C++之24
来源:互联网 发布:mac使用锐捷客户端 编辑:程序博客网 时间:2024/05/17 00:55
条款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都是需要代价的,我的观点是除非必要,否则不用。
- More Effective C++之24
- 《more effective c++》读书笔记
- More Effective C++(2)
- 《More Effective C++》读后感
- 《More Effective C++》笔记
- 《Effective C++》和《More Effective C++》汇总
- 《More Effective C++》读书笔记一
- 《more effective c++》笔记4
- More Effective C++:类型转换
- More Effective C++:类型转换
- More Effective C++:Item 27
- more effective c++--引用计数
- 读More Effective C++(1)
- More Effective C++:Item 27
- 《More Effective C++》读书笔记-异常
- 《More Effective C++》读书笔记-效率
- 《More Effective C++》读书笔记-技术
- 《More Effective C++》阅读记录
- 关于Google员工的17个秘密
- [ZT]写给互联网上从业的Web程序员
- 测试之我见
- 我的检查
- 创建网页Video上的悬浮工具条(Create toolbar overflow video on webpage)
- More Effective C++之24
- 一段美好的往事—— 一个老通讯员的点滴感受
- 格式化字符函數
- 在可执行jar中动态载入第三方jar(转贴)
- A Sample .NET DeProtector - whole assembly protection
- 禁止页面使用缓存~
- 提高ASP性能的最佳选择
- 实用C++开源程序/代码挖掘之codeproject
- 指针和数组关系初探