具有多态数据的容器的常见实现是什么?

Set*_*r22 0 c++ polymorphism vector

假设我创建了一个抽象类Entity,然后创建了它的多个子类,每个子类都有其参数和功能,但是由于Entity共享一个公共接口.到目前为止,这是面向对象编程中最常见的例子.

当我创建一个Entity值向量并告诉它为N个元素保留(确保容量而不调整大小)时,内部会发生什么.如果尺寸可以是任何值,它如何知道尺寸?公共部分是存储在向量中,还是指向子类特定部分的指针?如果是这样,那么指针最终在堆中声明了什么?这对缓存性能非常不利.

最后,这与POD和非POD类型有什么关系吗?

Mik*_*our 5

如果向量包含Entity值,则它包含类型的值Entity,而不是任何子类.由于Entity是抽象的,因此无法实例化这样的向量.

如果你想要多态,你必须存储指向存储在其他地方的对象的指针,或者如果你希望向量管理它们的生命周期,就像它的元素一样.

  • 我在采访中看到的毕业生有多少人不知道这一点.我真的不明白他们在大学里的"C++"课程中教的是什么.显然如何用malloc实现链表 (2认同)