Item 10:Have assignment operators return a reference to *this.
赋值运算符要返回自己的引用只是个协议,并无强制性。这份协议被所有内置类型和标准程序库提供的类型如string
, vector
, complex
std::shared_ptr
等共同遵守。可以用来支持链式的赋值语句。
1 | int x, y, z; |
相当于:
1 | x = ( y = ( z = 15 ) ); |
我们自定义的对象最好也能支持链式的赋值,这需要重载=运算符时返回当前对象的引用:
1 | class Widget { |