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。

  • 相关阅读:
    [BUUCTF 2018]Online Tool
    [ZJCTF 2019]NiZhuanSiWei 1
    [极客大挑战 2019]PHP
    [De1CTF 2019]SSRF Me
    2018网鼎杯 Fakebook
    [CISCN2019 华北赛区 Day2 Web1]Hack World
    SUCTF checkin
    强网杯 高明的黑客
    GYCTF Ezsqli
    GYCTF 盲注【regexp注入+时间盲注】
  • 原文地址:https://www.cnblogs.com/lidan/p/2321819.html
Copyright © 2011-2022 走看看