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
    

      

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

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    服务器带宽
    nload 源码安装
    Error: rpmdb open failed
    宽带,带宽,网速
    使用speedtest-cli测量服务器带宽
    ubuntu 安装 iperf
    微信退款机制
    记录程序执行之间,接口调用时间到日志文件或数据库
    机智的查询
    如果一些复杂的数据查询不好用数组,那就用字符串拼接,灵活方便
  • 原文地址:https://www.cnblogs.com/htj10/p/10186047.html
Copyright © 2011-2022 走看看