gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:59 25 4
gpt4 key购买 nike

假设我创建了一个抽象类 Entity,然后是它的多个子类,每个子类都有它的参数和函数,但由于 Entity 而共享一个公共(public)接口(interface)。这是迄今为止面向对象编程中最常见的示例。

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

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

最佳答案

如果 vector 包含 Entity 值,那么它包含 Entity 类型的值,而不是任何子类。由于 Entity 是抽象的,因此无法实例化这样的 vector 。

如果您想要多态性,则必须存储指向存储在别处的对象的指针,或者如果您希望 vector 像管理其元素一样管理它们的生命周期,则必须存储智能指针。

关于c++ - 具有多态数据的容器的常见实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29183244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com