操作符'='应该返回常量吗
string x, y, z;
x = y = z = "hello";
string::operator = 返回了一个引用,所以上面的链式赋值就可以进行了。
等价于
x = (y = (z = "hello"));
string::operator = 返回值是string &, 为什么不是 const string & ?
这样可以防止
(x = y) = z; // 将z赋值给(x = y)?
但上面的赋值是合法的,相当于
x = y;
x = z;
看看int类型或其它类型也是支持这样的赋值的,所以你自定义的类最好也支持。
string x, y, z;
x = y = z = "hello";
string::operator = 返回了一个引用,所以上面的链式赋值就可以进行了。
等价于
x = (y = (z = "hello"));
string::operator = 返回值是string &, 为什么不是 const string & ?
这样可以防止
(x = y) = z; // 将z赋值给(x = y)?
但上面的赋值是合法的,相当于
x = y;
x = z;
看看int类型或其它类型也是支持这样的赋值的,所以你自定义的类最好也支持。