vector<Class> 或 vector<unique_ptr<Class>> 在这种情况下?
vector<Class> or vector<unique_ptr<Class>> in this case?
假设我有一个 class 看起来像:
class Foo
{
int sam;
float fisher;
double irvin;
vector<Bar> lambert;
};
我想将 Foo
的实例存储到向量中
vector<Foo> foos;
因为 lambert
可以容纳未定义数量的 Bar
,对象切片是否会发生或者 c++ 的向量在这方面非常聪明?
使用 unique_ptr
的向量会更好还是我太担心了?
class Foo
{
...
vector<unique_ptr<Bar>> lambert;
};
谢谢 :) !
当您将派生值存储为其基础时,就会发生对象切片。它只发生在价值观上。假设您总是存储 Bars,而不是它的某些衍生物,则不会发生切片。 vector
将其值存储在别处——这不像保持静态大小的数组。
假设我有一个 class 看起来像:
class Foo
{
int sam;
float fisher;
double irvin;
vector<Bar> lambert;
};
我想将 Foo
的实例存储到向量中
vector<Foo> foos;
因为 lambert
可以容纳未定义数量的 Bar
,对象切片是否会发生或者 c++ 的向量在这方面非常聪明?
使用 unique_ptr
的向量会更好还是我太担心了?
class Foo
{
...
vector<unique_ptr<Bar>> lambert;
};
谢谢 :) !
当您将派生值存储为其基础时,就会发生对象切片。它只发生在价值观上。假设您总是存储 Bars,而不是它的某些衍生物,则不会发生切片。 vector
将其值存储在别处——这不像保持静态大小的数组。