默认复制构造函数及其问题

Default copy constructor & its problems

本文关键字:问题 构造函数 复制 默认      更新时间:2023-10-16

可能重复:
什么是"三条规则"?

为什么建议提供复制构造函数的实现,而不是使用编译器提供的"默认复制构造函数"?

如果您的类包含指针成员,这些指针成员是动态分配的,那么您需要提供自己的副本构造版本,因为默认版本只是对它们进行浅层复制。

事实并非如此。

默认的复制构造函数在99.9%的情况下都是完美的。

具有所属指针的类的例外。在这里,默认副本构造函数的浅层副本对于初学者来说并不能正常工作。

但是,你的类中永远不应该有指针,所以这就成了一个问题。为了明确这一点,任何拥有的指针都应该包含在智能指针(或容器类型(对象中。所以这不是问题。

如果您正在编写一个智能指针或类似容器的对象,那么您需要实现三规则。