EffectiveC++-条款10:令 operator= 返回一个reference to *this

一. 内容

  1. 赋值采用右结合律
  2. 赋值有趣的一点,是你可以把它写出连锁赋值的形式。
    int x, y, z;
    x = y = z = 15;
    
    它相当于x=(y=(z=15));
  3. 为了实现这种连锁赋值,赋值操作符必须返回一个reference指向操作符的左侧实参。这也是实现class重载赋值操作符应该遵循的协议。这种协议不仅适用于标准赋值,也适用于所有赋值相关的运算(+=,-=,*=,/=,<<=,…)。
    class Temp{
    public:
    	Temp& operator=(int rhs){
    		//...
    		return *this;
    	}
    	Temp& operator+=(int rhs){
    		//...
    		return *this;
    	}
    };
    
  4. 当然这只是协议,并无强制性,不遵循,代码一样可以通过编译。然而这份协议被所以内置类型和标准库提供的类型,如string,vector,complex,trl1::shared_ptr或即将提供的类型共同遵守,除非你有一个标新立异的好理由,不然还是遵守吧。

二. 总结

  1. 令赋值操作符返回一个 reference to *this.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值