Effective C++ 第十二条 Copy all parts of an object.
复制对象时勿忘其中每一个成分
我们先写一个类以及它的拷贝构造和赋值操作

这个类没有任何问题,也不会报错,接着看

但是一旦涉及继承,就会出问题了,在 Derived 类中拷贝构造明明和 Base 一样,但是却会出错,因为 Derived 的拷贝构造只初始化了 Derived 中的成员 b ,没有顾及到 Base 中的成员 a。但是这里 Derived 是 public 继承,无法调用 Base 中的 private 成员,所以应当调用 Base 的 拷贝构造或复制来实现,解决如下

问题到这里就解决了,但是有一个点可以优化
将 assignment 和 copy constructor 的共同部分打包成一个函数,尽量代码复用

这里通过提高了代码复用性。
谨记:不要通过 assignment 调用 copy constructor ,也不要在 copy constructor 调用 assignment。