假设如下一种情况:
基类---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]的地址是什么鬼才知道!
本文深入探讨了在C++中利用多态性实现代码复用和抽象设计的过程,同时揭示了多态性应用中可能出现的问题及解决策略。重点分析了在多态函数中获取不同类型对象地址时的注意事项,以及如何避免由于基类和派生类大小不同导致的地址计算错误。
647

被折叠的 条评论
为什么被折叠?



