zoukankan      html  css  js  c++  java
  • 重载operator++

    参考:www.cnblogs.com/ggggg63/p/6693008.html

    (作为成员函数的)前置“++”不接受任何参数,而后置“++”接受一个int类型的参数,尽管没什么实际用途,但是却为编译器确定重载对象提供了帮助。

    还有一点,则是需要特殊小心地处理返回值问题。前置++通常情况应该返回对象的引用,而后置式的++应该返回一个const修饰的对象实体。

    1. 一般重载为成员函数
    //prefix ++ : increment and fetch
    myclass & myclass::operator++()
    {
        *this += 1;
        return *this;
    }
    //postfix ++ : fetch and increment
    const myclass myclass::operator++(int)
    {
        myclass tmp = *this;
        ++(*this);
        return tmp;
    }
    
    2. 也可重载为非成员函数(很少这么做)
    friend myclass& operator(myclass& a); // 前++
    friend myclass  operator(myclass& a, int); //后++
    

      

      例子:

    class point
    {
    public:
        point(int val)
        {
            x=val;
        }
        //(作为成员函数的)前置“++”不接受任何参数,而后置“++”接受一个int类型的参数,
        //尽管没什么实际用途,但是却为编译器确定重载对象提供了帮助。
        point& operator++() //前++
        {
            x++;// this->x += 1;
            return *this;
        }
        const point operator++(int) //后++
        {
            point old=*this;
            ++(*this);
            return old;
        }
        int GetX() const
        {
            return x;
        }
    private:
        int x;
    };
    int main()
    {
        point a(10);
        cout<<(++a).GetX();
        cout<<a++.GetX();
        return(0);
    }
    // 结果: 1111
    

      

    常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    CF1439E
    CF1446
    CSP2020 游记
    CF1442
    CF1444E
    CF1444
    CF850F Rainbow Balls
    A
    uoj266[清华集训2016]Alice和Bob又在玩游戏(SG函数)
    loj536「LibreOJ Round #6」花札(二分图博弈)
  • 原文地址:https://www.cnblogs.com/htj10/p/10186047.html
Copyright © 2011-2022 走看看