C++中继承自array不要使用多态
2013-07-23 09:24
246 查看
假设如下一种情况:
基类---ArrayBase b;
继承ArrayBase的子类----ArraySub a;
使用上述类的多态函数---fun(const ArrayBase& a){}(注意a是子类,存在多态)
假如在fun函数中有操作a[i]需要取得a[i]的地址,数组取地址的方式是sizeof(ArrayBase)*i;请看好sizeof中的类型,使用的是基类,因此计算a[i]时会按照ArrayBase的大小取得的,但ArrayBase和ArraySub大小有极大可能不同,如此一来,a[i]的地址是什么鬼才知道!
基类---ArrayBase b;
继承ArrayBase的子类----ArraySub a;
使用上述类的多态函数---fun(const ArrayBase& a){}(注意a是子类,存在多态)
假如在fun函数中有操作a[i]需要取得a[i]的地址,数组取地址的方式是sizeof(ArrayBase)*i;请看好sizeof中的类型,使用的是基类,因此计算a[i]时会按照ArrayBase的大小取得的,但ArrayBase和ArraySub大小有极大可能不同,如此一来,a[i]的地址是什么鬼才知道!
相关文章推荐
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- c++中什么是多态,继承中的using使用
- More Effective C++议题【三】:不要对数组使用多态
- 第05章 CORE C++_对象的创建和使用_继承_多态_析构_xxx_cast_友元_只读成员_静态成员_多重继承_虚继承_内部类
- 《more effective c++》Item M3:不要对数组使用多态
- more effective c++之Item M3:不要对数组使用多态
- C++之不要对数组使用多态(3)---《More Effective C++》
- C++点滴:创建对象数组的时候,不要使用继承
- C++对象布局及多态实现探索之虚继承
- C++的继承和多态的区别
- 使用(Service)KnownType标记实现继承、多态特性
- C++之继承与多态
- 搞清楚C++继承、多态、虚函数、纯虚函数
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- c++多重继承、多态
- C语言模式实现C++继承和多态
- C++ 继承与多态
- C++内存中的封装、继承、多态(上)
- C++中的多态和继承
- c++ --------- 多态下的菱形继承,菱形虚拟继承