Set*_*r22 0 c++ polymorphism vector
假设我创建了一个抽象类Entity,然后创建了它的多个子类,每个子类都有其参数和功能,但是由于Entity共享一个公共接口.到目前为止,这是面向对象编程中最常见的例子.
当我创建一个Entity值向量并告诉它为N个元素保留(确保容量而不调整大小)时,内部会发生什么.如果尺寸可以是任何值,它如何知道尺寸?公共部分是存储在向量中,还是指向子类特定部分的指针?如果是这样,那么指针最终在堆中声明了什么?这对缓存性能非常不利.
最后,这与POD和非POD类型有什么关系吗?
如果向量包含Entity值,则它包含类型的值Entity,而不是任何子类.由于Entity是抽象的,因此无法实例化这样的向量.
如果你想要多态,你必须存储指向存储在其他地方的对象的指针,或者如果你希望向量管理它们的生命周期,就像它的元素一样.
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |