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。

  • 相关阅读:
    【BZOJ 2120】 数颜色
    【BZOJ 1878】 HH的项链
    【BZOJ 2038】小Z的袜子
    【BZOJ 2724】 蒲公英
    【POJ 2482】 Stars in Your Windows
    【POJ 2182】Lost Cows
    __align(num) 分析
    C# 获取图片某像素点RGB565值
    基于OpenCV的火焰检测(三)——HSI颜色判据
    基于OpenCV的火焰检测(一)——图像预处理
  • 原文地址:https://www.cnblogs.com/lidan/p/2321819.html
Copyright © 2011-2022 走看看