ela*_*lad 6 c++ copy-constructor
假设我有一个包含许多字段的类,和/或不断变化(在开发中),并且它的所有字段要么是本地的,要么是不必要的 POD 类型,它们提供了令人满意的复制构造函数,但是一个- 甚至可能有删除或私有化其复制构造函数,但为我提供了根据需要进行复制的方法。
现在假设我需要它有自己的复制构造函数。
我是否必须通过字段副本编写详尽的(令人筋疲力尽的)字段,或者是否有更干净,更少暴露于错误的方法来实现相同的目标?
插图代码:
class Big {
public :
Big(Big const & big) : ? { ? }
protected :
int i1, i2, ... , i50;
float f1, f2, ... , f50;
CopyConstructableClass1 c1;
CopyConstructableClass2 c2;
...
CopyConstructableClass20 c20;
NonCopyConstructableClass ncc;
};
Run Code Online (Sandbox Code Playgroud)
谢谢
通常我在这种情况下所做的是将所有可以复制自身的字段放入基类中。我可以拥有一个只有一个字段的派生类,该字段将被手动复制。
为了强调这个基类不能单独使用,明智的做法是标记它的析构函数protected。事实上,它的所有成员都可以。