赋值
连锁形式:
赋值采用右结合律int x,y,z; x=y=z=15;
为了实现”连锁赋值“,赋值操作符必须返回一个reference指向操作符的左侧实参。x=(y=(z=15));
class Widget{ public: ... Widget &operator=(const Widget&rhs) { .... return *this; } }
其他相关赋值运算也可以
class Widget{ public: ... Widget& operator+=(const Widget&rhs) { ... return *this; } Widget &operator=(int rhs) { ... return *this; } ... };
这份协议被所有内置类型和标准程序库提供的类型如 string,vector,complex,trl::shared_ptr 等 共同遵守。令赋值操作符返回一个reference to *this