使用对象向量作为成员变量复制对象的构造函数

时间:2015-03-25 17:40:31

标签: c++ vector copy-constructor member

我有一个A班,vector<Object> object_list_作为成员变量。

我知道如果我有一个指针向量,我需要编写一个特定的复制构造函数来实现深层复制。但是,在这种情况下,由于我没有指针,因此在复制A类型的对象时,默认的复制构造函数也会自动调用Object的复制构造函数或{{1}中的每个元素或者我是否必须编写自己的复制构造函数来执行此操作?

2 个答案:

答案 0 :(得分:4)

您的类的默认复制构造函数将按照它们在类中声明的顺序为每个成员调用默认复制构造函数。一条经验法则是,如果您不需要特殊的析构函数,那么您不需要更改复制构造函数,复制赋值,移动构造函数或移动赋值。 (虽然删除它们仍然有意义,取决于课程。)

vector的复制构造函数将使用其复制构造函数复制其元素。如果它们是指针,它将复制指针,这意味着它们将指向与原始向量相同的数据。 99%的时间这是你想要的。虽然很少你可能想要替换你的类的复制构造函数,以使向量做其他事情。

听起来你不需要在你的情况下制作复制构造函数。

答案 1 :(得分:0)

成员变量的复制构造函数一直被调用。因此,如果生成了一个默认值(在这种情况下就是这样),那么它就会被调用。