标签:
Item10-令operator = 返回一个reference to *this(Have assignment operators return a reference to *this)
Ex:
int x,y,z
x=y=z=15; //赋值连锁形式
赋值采用右结合律,所以上述连锁赋值被解析为:x=(y=(z=15));
为了实现"连锁赋值",赋值操作符必须返回一个reference指向操作符的左侧实参,这是你为classes实现赋值操作符时应遵循的协议。
Ex1:
class Widget
{
public:
...
Widget & operator = (const Widget & rhs) //返回类型是引用
{
...
return *this; //返回左侧对象
}
...
};
这种协议也适用与赋值相关运算
Ex2:
class Widget
{
public:
...
Widget & operator += (const Widget & rhs) //这个协议适用于+=、-=、*=等等
{
...
return *this;
}
Widget & operator = (int rhs)
{
...
return *this; //此函数也适用,即使此操作符的参数类型不符合协定
}
};
这份协议被所有内置类型和标准程序库提供的类型如string、vector、complex、trl::share_ptr或即将提供的类型共同遵守。
请记住:
令赋值(assignment)操作符返返回下一个reference to *this。
Effective C++ Item10-令operator = 返回一个reference to *this
标签:
原文地址:http://blog.csdn.net/u011391629/article/details/52152718