2011-07-25 63 views

回答

0

如果你的类包含指针成员,这是动态分配那么你需要提供自己的版本的副本construcor,因为默认版本只是使它们的浅拷贝。

+0

这个规则太宽泛了,对于我实现的任何具有指针的类,通常都只是false。几乎我使用指针的唯一原因是非拥有可重定义的引用。在这种情况下,编译器生成的拷贝构造函数很好。 –

+0

@Benjamin Lindley:希望能帮助你更好地理解。 –

0

不是。

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

拥有指针的类的例外。这里默认拷贝构造函数的浅拷贝不能像初学者所期望的那样工作。

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

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