• Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)


    问题聚焦:

    这个准则比较简短,但是往往就是这种细节的地方,可以提高你的代码质量。
    细节决定成败,让我们一起学习这条重载赋值操作符时需要遵守的准则吧。


    还是以一个例子开始:
    Demo

    // 连锁赋值
    x = y = z = 15;
    // 上面的表达式等价于
    x = ( y = ( z = 15 ) );


    为了实现上述的连锁赋值,赋值操作符必须返回一个reference指向操作符的左侧实参。
    即:

    class Widget {
    public:
        Widget& operator=(const Widget& rhs)
       {
            ....
            return* this;
        }
    };


    这可以认为是一个协议,适用于所有赋值相关运算

    class Widget {
    public:
        ...
        Widget& operator+=(const Widget& rhs)
        {
            ....
            return *this;
        }
        Widget& operator=(const Widget& rhs)
        {
            ...
            return *this;
        }
    };


    使用这个协议的理由:所有内置类型和标准程序库提供的类型如:string, vector, complex, tr1::shared_ptr或即将提供的类型共同遵守。除非你有一个标新立异的好理由,不然还是随众吧。。

    小结:
    令重载赋值操作符返回一个当前对象的引用(reference to *this)


    参考资料:
    《Effective C++ 3rd》
  • 相关阅读:
    SDWebImage
    ios面试题
    IOS推送功能push
    NSString什么时候用copy,什么时候用strong
    OC点语法和变量作用域
    iOS 常用几种数据存储方式
    JSON与XML的区别比较
    IOS开发——网络编程OC篇&Socket编程
    IOS-UI控件大全
    使用sql语句备份一张表
  • 原文地址:https://www.cnblogs.com/suzhou/p/3638961.html
Copyright © 2020-2023  润新知