条款三:绝对不要以多态的方式处理数组
2016-08-09 10:42
260 查看
条款三:绝对不要以多态的方式处理数组
1. 数组解析长度问题
数组解析的方式是根据数组的数据类型取偏移量再取出对应地址的数据,就像(*(p+i)),这在利用数组下标等使用数组中数据时会产生很多麻烦调用问题
书上说,使用多态数组会因为数组指针步长的问题无法读取到相应的成员,但是在使用时这并不影响使用父类同样拥有的函数和数据。
person p1; person p2; man m1; man p[3] = {p1,m1,p2}; p[1].fun();
2. 删除问题
因为数组的解析问题,在删除通过new的数组时,无法确定到具体的数据成员而失败。和1同理,原因貌似不是这个
2.函数调用问题
在调用函数时,因为子类和父类同时拥有父类的函数和数据成员,所有用数组解析出来的对象使用父类的数据和函数不存在问题,但是当使用到子类的数据和成员时编译器会报错,此对象不存在该函数或该数据。特别是在调用析构函数时,会造成严重的内存泄漏问题。这个因该是上述delete[]p所造成的错误原因,而不是步长。
相关文章推荐
- More Effective C++ 条款3 绝对不要以多态(polymorphically)方式处理数组
- More Effective C++(条款三:绝对不要以多态方式处理数组)
- 读《More Effective C++35个改善编程与设计的有效方法》之条款3:绝对不要以多态方式处理数组
- 条款3:绝对不要以多态(polymorphically)方式处理数组
- 条款3:绝对不要以多态方式处理数组
- 《More effective C++》 中条款三 不要用多态方式处理数组以及数组的析构
- 绝对不要以多态方式处理数组(More Effective c++)
- 【M3】绝对不要以多态方式处理数组
- 不要用多态方式处理数组以及数组的析构
- 不要以多态的方式处理数组
- 不要以多态的方式处理数组(More Effective-C++_3(基础))
- c++ 不要以多态的方式处理数组
- C++以多态方式处理数组可能会遇到的问题
- 以多态的方式处理数组 产生的问题 实例代码
- More Effective C++ 读书笔记 之 不以多态方式处理数组
- Effective C++ 条款11,12 在operator= 中处理“自我赋值” || 复制对象时不要忘记每一个成分
- Item M3:不要对数组使用多态 无责任书评
- More Effective C++议题【三】:不要对数组使用多态
- [汇编语言]-第七章 用[bx+idata]的方式进行数组的处理
- 使用[bx+idata]的方式进行数组处理