繁体   English   中英

具有派生对象的基类的std :: vector

[英]std::vector of Base class with Derived objects

我有一个std::shared_ptr的双端队列声明有一个基类的双端队列(我们称其为Polygon),但是我在其上存储了指向派生objecs的指针(例如Triangle)。 我现在正在考虑将数据结构更改为std::vector以利用vector确保相邻内存的事实,但是我在这里有两个问题:

1)即使物体的大小不同,这也是可能的吗? 还是会发生这样的情况:由于派生的对象比基对象大,它们将在内存中重叠?

2)存储std::shared_ptr我不会将它们从字面上直接存储在内存中,只是指针是真的吗? 还是我错了?

谢谢

即使物体的大小不同,这是否可能? 还是会发生这样的情况:由于派生的对象比基对象大,它们将在内存中重叠?

这可以。 即使“ Derived可以大于“ Base您实际上并没有将它们存储在向量中。 您正在存储指向它们的指针,并且指针的大小始终相同。

存储std::shared_ptr我不会将它们从字面上直接存储在内存中,只是指针是真的吗? 还是我错了?

正确,指针将在向量中彼此相邻,但它们指向的内容可能在内存中的任何位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM