为了编程的简洁性,有时候需要串联赋值,如:x = y = z = 15; 由于赋值采用右结合,因此上述语句被解释为:x = (y = (z = 15));
为了实现串联赋值,复制操作符函数必须返回一个指向操作符左侧实参的的引用,如下:
1 class Widget 2 { 3 public: 4 ... 5 Widget& operator=(const Widget& rhs) 6 { 7 ... 8 return *this; 9 } 10 ... 11 };
注意:
这个规则不仅适用于赋值 = ,对于其他操作符如 += 、 -= 等同样适用。