c++ - 以 vector 为成员变量的对象复制构造函数

标签 c++ vector copy-constructor member

我有一个类Avector<Object> object_list_作为成员变量。

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

最佳答案

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

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

听起来您不需要在您的情况下创建复制构造函数。

关于c++ - 以 vector 为成员变量的对象复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262732/

相关文章:

c++ - 如何使用 std::map 从模板中获取数据类型

math - 从 3D 中的变换矩阵计算 'up vector'

database - 如何在数据库 : BLOB or ARRAY? 中存储向量

c++ - 在 shared_ptr 的复制构造函数中

c++ - 我如何在 std::vector 中存储没有复制构造函数的类?

c++ - 回退到复制构造函数不起作用?

c++ - 抽象类 C++ 中的增量运算符重载

c++ - 如何在静态库中的单独 cpp 文件中链接未引用的变量?

c++ - 从文件 (ifstream) 读取并写入文件 (ofstream) - 编码问题

c++ - 在多个容器中包含单个数据