zoukankan      html  css  js  c++  java
  • effective C++ 条款 10:operator= 返回一个reference to *this

    赋值的连锁式 x=y=z=3;被解析成x=(y=(z=3));为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符的左侧实参,

    这是你为class实现赋值操作符时应该遵循的协议:

    class Widget
    {
    public:
        Widget& operator=(const Widget& rhs) //返回类型是reference,
        {                                                            //指向当前对象
            ...
            return *this;                //返回左侧对象
        }
    protected:
    private:
    };

    这个协议不仅适用于以上的标准赋值形式,也适用于所有赋值相关运算。

    class Widget
    {
    public:
        Widget& operator+=(const Widget& rhs) //返回类型是reference,
        {                                                            //指向当前对象
            ...
            return *this;                //返回左侧对象
        }
        Widget& operator=(int rhs)
        {
            ...
            return *this;
        }
    protected:
    private:
    };

    令赋值操作符返回一个reference to *this。

  • 相关阅读:
    20210309-2 阅读任务
    20210309-1 准备工作
    课程总结
    第十四周课程总结&实验报告(简单记事本的实现)
    十三周课程总结
    十二周课程总结
    第十一周课程总结
    C语言ll作业01
    C语言寒假大作战04
    C语言寒假大作战03
  • 原文地址:https://www.cnblogs.com/lidan/p/2321819.html
Copyright © 2011-2022 走看看