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。

  • 相关阅读:
    [P1034][NOIP2001]一元三次方程求解 (二分)
    考前停课集训 Day7 嘞
    [P4995]跳跳!(贪心)
    [P4994]终于结束的起点 (递推)
    考前停课集训 Day6 垒
    [BZOJ1899][ZJOI2004]Lunch 午餐 (DP)
    考前停课集训 Day5 累
    任务查询系统 【主席树】
    主席树入门
    HNOI2002 营业额统计 平衡树模板题 【splay】
  • 原文地址:https://www.cnblogs.com/lidan/p/2321819.html
Copyright © 2011-2022 走看看