![](/img/trans.png)
[英]c++ std::vector of base class objects -— running method of derived class
[英]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.