码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-08-08 17:41:26      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!