如果在C ++类中省略了copy-constructor,会发生什么(确切地说)?
该课程是仅仅是成员还是成员?
答案 0 :(得分:8)
该类是成员复制的。
这意味着调用所有成员的拷贝构造函数。
答案 1 :(得分:1)
默认的复制构造函数是明智的。
同样的成员方法也用于创建赋值运算符;但是,如果类具有引用成员,则不会创建赋值运算符(因为在构造之后无法重新引用引用)。
答案 2 :(得分:0)
您将获得将内容从一个对象复制到另一个对象的默认副本。这具有重要的副作用,现在包含指针的每个成员现在在原始对象和副本之间共享。
答案 3 :(得分:0)
请注意,对于成员级副本,如果已分配任何内存,则数据结构将共享分配的内存 - 因此,如果要创建深层(独立)数据副本以创建副本,这一点很重要分配内存的结构的构造函数。如果您的结构没有分配内存,则不太可能真正需要复制构造函数。
但是,如果您实现了复制构造函数,请不要忘记三个规则:复制构造函数,赋值运算符,析构函数。如果实施了一个,则必须实施所有三个。
的问候,
丹尼斯M。