More Effective C++议题【三】:不要对数组使用多态
来源:互联网 发布:杜兰特本赛季数据统计 编辑:程序博客网 时间:2024/05/13 05:42
<<More Effective C++>> 学习笔记【三】
这个议题的实际意义在于对多态的size要有清晰的理解和把控。建议中给出了如下出错代码 :
//注意!这是错误的代码class BST { ... };class BalancedBST: public BST { ... };int printBSTArray( ostream& s, const BST array[], int numElements){ for (int i = 0; i < numElements; i++) { s << array[i]; //假设BST类重载了操作符<< } }//对数组使用多态 BST BSTArray[10]; //... printBSTArray(cout, BSTArray, 10); // 运行正常 BalancedBST bBSTArray[10]; //... printBSTArray(cout, bBSTArray, 10);//出错!
其实对于嵌入式或者C程序员来讲,这里的错误很好理解:
printBSTArray函数中的对数组array[]的遍历操作实际上通过指针的移动进行,而每次移动的大小在本例中则是sizeof(BST)。
那么多态在这种情况下的移动会产生内存大小的不确定性。
这个建议很好理解。不再多话。
- More Effective C++议题【三】:不要对数组使用多态
- 《more effective c++》Item M3:不要对数组使用多态
- C++之不要对数组使用多态(3)---《More Effective C++》
- more effective c++之Item M3:不要对数组使用多态
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- 《More Effective C++》读书笔记-基础议题
- <<More Effective C++>>读书笔记1: 基础议题
- 绝对不要以多态方式处理数组(More Effective c++)
- 不要以多态的方式处理数组(More Effective-C++_3(基础))
- 《More effective C++》 中条款三 不要用多态方式处理数组以及数组的析构
- 《More Effective C++》学习心得(三) 不要以多态性处理类的对象数组
- More Effective C++:不使用多态性数组
- 《More Effective C++》重点摘要一:基础议题
- More Effective(一)基础议题
- more effective c++基础议题
- More Effective C++----(7)不要重载"&&"、"||"、","
- More Effective C++读书笔记---基础议题
- More Effective C++ 第一部分 基础议题
- ubuntu12.04创建快捷方式
- KVC
- 常用sql写法
- iOS 动画
- 如何设置listview 中itme 的大小
- More Effective C++议题【三】:不要对数组使用多态
- js效果
- div或body的css样式height:100%失效
- 笔记本电脑建立Wifi热点多种方法
- Problem - 216B - Codeforces Forming Teams
- 第四章 控制流执行
- 最长上升子序列(Longest Increasing Subsequence)
- 基于visual Studio2013解决C语言竞赛题之0419误差控制
- 推荐几款在线性能测试网站