我有一个类A
用vector<Object> object_list_
作为成员变量。
我知道,如果我有一个指针 vector ,我将需要编写一个特定的复制构造函数来实现深复制。但是,在这种情况下,因为我没有指针,所以在复制 A
类型的对象时, 默认复制构造函数也会自动调用 Object
的复制构造函数或 object_list_
中的每个元素还是我必须编写自己的复制构造函数才能做到这一点?
最佳答案
类的默认复制构造函数将按照成员在类中声明的顺序为每个成员调用默认复制构造函数。一条经验法则是,如果不需要特殊的析构函数,则不需要更改复制构造函数、复制赋值、移动构造函数或移动赋值。 (尽管删除它们可能仍然有意义,具体取决于类别)。
vector 的复制构造函数将使用其元素的复制构造函数复制其元素。如果这些是指针,它将复制指针,这意味着它们将指向与原始 vector 相同的数据。 99% 的时间这就是您想要的。尽管在极少数情况下,您可能希望替换类的复制构造函数以使 vector 执行其他操作。
听起来您不需要在您的情况下创建复制构造函数。
关于c++ - 以 vector 为成员变量的对象复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262732/