如果你在C ++类中省略了copy-constructor,会发生什么?

时间:2011-02-27 15:55:00

标签: c++ copy-constructor

如果在C ++类中省略了copy-constructor,会发生什么(确切地说)?

该课程是仅仅是成员还是成员?

4 个答案:

答案 0 :(得分:8)

该类是成员复制的。

这意味着调用所有成员的拷贝构造函数。

答案 1 :(得分:1)

默认的复制构造函数是明智的。

同样的成员方法也用于创建赋值运算符;但是,如果类具有引用成员,则不会创建赋值运算符(因为在构造之后无法重新引用引用)。

答案 2 :(得分:0)

您将获得将内容从一个对象复制到另一个对象的默认副本。这具有重要的副作用,现在包含指针的每个成员现在在原始对象和副本之间共享。

答案 3 :(得分:0)

请注意,对于成员级副本,如果已分配任何内存,则数据结构将共享分配的内存 - 因此,如果要创建深层(独立)数据副本以创建副本,这一点很重要分配内存的结构的构造函数。如果您的结构没有分配内存,则不太可能真正需要复制构造函数。

但是,如果您实现了复制构造函数,请不要忘记三个规则:复制构造函数,赋值运算符,析构函数。如果实施了一个,则必须实施所有三个。

的问候,
丹尼斯M。