vector <class>或vector <unique_ptr <class>&gt;在这种情况下?

时间:2016-02-10 19:40:39

标签: c++ vector unique-ptr

假设我有一个看起来像这样的课程:

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;
};

谢谢:)!

1 个答案:

答案 0 :(得分:4)

当您将派生值存储为其基础时,会发生对象切片。它只发生在价值观上。假设您总是存储Bars,而不是其衍生物,则不会发生切片。 vector将其值存储在其他位置 - 这与保持静态大小的数组不同。