不要对数组使用多态C++ 中的类继承特性使得你可以通过基类引用或指针来对派生类进行操作(多态)。同样的,这一特点也同样使用于对象数组。但请永远不要对对象数组使用多态。假设有这样一个对基类数组进行访问的函数:voidprintObjs(Base[]obj,intnum){for(inti=0;i<num;++i){cout<<obj[i];}}同时有基类Base的派生类Child。若程序中出现:ChildmyObj[10];// 对 myObj 所有元素初始化printObjs(myObj,10);这样的代码会产生与你所设想不一样的执行结果。原因很简单,因为Base` 与 ``Child的结构不一样。也就是说Base对象与Child对象所占用的内存空间不一样。因此Base指针偏移也不同。这样将导致Base的指针运算不能正确地使用在Child对象上。而数组实际上就是指针操作,因此数组也不应该和多态一起使用。__小结:__基类的指针运算不能够正确地适用于派生类。任何情况下都应该避免多态与指针运算共同使用。
...
继续阅读
(9)