以向量为成员变量的对象复制构造函数

Copy constructor for object with vector as member variable

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

我知道,如果我有一个指针向量,我将需要编写一个特定的复制构造函数来实现深复制。但是,在这种情况下,由于我没有指针,当复制类型为 A 的对象时,默认复制构造函数也会自动调用 Object 或 [=14] 中的每个元素的复制构造函数=] 还是我必须编写自己的复制构造函数才能做到这一点?

成员变量的拷贝构造函数一路向下调用。因此,如果生成了默认值(在这种情况下会生成),则会调用它。

class 的默认复制构造函数将按照成员在 class 中声明的顺序调用每个成员的默认复制构造函数。一条经验法则是,如果不需要特殊的析构函数,则不需要更改复制构造函数、复制赋值、移动构造函数或移动赋值。 (尽管删除它们可能仍然有意义,具体取决于 class)。

矢量的复制构造函数将使用其元素的复制构造函数复制其元素。如果这些是指针,它将复制指针,这意味着它们将指向与原始向量相同的数据。 99% 的时间这就是您想要的。尽管在极少数情况下,您可能想要替换 class' 复制构造函数以使向量执行其他操作。

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