默认复制构造函数&它的问题

时间:2011-07-25 04:39:33

标签: c++ copy-constructor

  

可能重复:
  What is The Rule of Three?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

不是。

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

拥有指针的类的例外。这里默认复制构造函数的浅表副本不能像初学者那样工作。

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

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