矢量<Class>或矢量<unique_ptr<Class>在这种情况下>?

vector<Class> or vector<unique_ptr<Class>> in this case?

本文关键字:gt lt Class ptr 这种情况下 矢量 unique      更新时间:2023-10-16

假设我有一个类,如下所示:

class Foo
{
    int sam;
    float fisher;
    double irvin;
    vector<Bar> lambert;
};

我想将Foo的实例存储到向量中

vector<Foo> foos;

由于lambert可以容纳未定义的Bar s,因此对象切片可能会发生还是C ++的向量非常聪明?

使用unique_ptr向量会更好还是我太担心它了?

class Foo
{
    ...
    vector<unique_ptr<Bar>> lambert;
};

谢谢:)!

当您将派生值存储为其基时,会发生对象切片。 它只发生在价值观上。 假设您始终存储柱线,而不是其衍生品,则不会发生切片。 vector将其值存储在其他地方 - 这不像保留静态大小的数组。