Effective C++ Item10-令operator = 返回一个reference to *this

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。




你可能感兴趣的:(LeetCode)