copy构造函数被用来“以同型对象初始化自我对象”,copy assignment操作符被用来“从另一个同型对象中拷贝其值到自我对象”:
class Widget{
public Widget();
Widget(const Widget& rhs);
Widget & operator = (const Widget & rhs);
};
Widget w1;
WIdget w2(w1); //调用复制构造函数
w1=w2; //调用copy assignment 操作符
当你看到赋值符号时小心,因为“=”语法也可用来复制copy构造函数
Widget w3=w2; //调用copy构造函数!
复制构造和复制赋值有所区别,如果一个新对象被定义,一定会有个构造函数被调用,不可能调用赋值操作。
如果没有新对象被定义,就不会有构造函数被调用,那么当然是赋值操作被调用。