effective c++条款15学习总结

条款15: 让operator=返回*this的引用

    operator=的返回值必须可以作为一个输入参数被函数自己接受。在一个类c中,缺省版本的operator=函数具有如下形式(见条款45):

c& c::operator=(const c&);

    一般情况下几乎总要遵循operator=输入和返回的都是类对象的引用的原则,然而有时候需要重载operator=使它能够接受不同类型的参数。例如,标准string类型    提供了两个不同版本的赋值运算符:

 

    string& // 将一个string

    operator=(const string& rhs); // 赋给一个string

 

    string& // 将一个char*

    operator=(const char *rhs); // 赋给一个string

 

    请注意,即使在重载时,返回类型也是类的对象的引用。

    c++程序员经常犯的一个错误是让operator=返回void,这好象没什么不合理的,但它妨碍了连续(链式)赋值操作,所以不要这样做。

 

    结论:当定义自己的赋值运算符时,必须返回赋值运算符左边参数的引用,*this。如果不这样做,就会导致不能连续赋值,或导致调用时的隐式类型转换不能进行,或两种情况同时发生。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值