• 自增运算符重载


    //前置++是把对象加1后再给你用。

    //后置++是把对象的值借你用,再把对象本身加1。


    1.作为成员函数:

    前缀自增运算符

        test operator++() //前置运算符
        {
            this->value++;
            return *this;
        }

    后缀自增运算符

        test operator++(int) //后置运算符
        {
            test temp(*this);  //将对象的值赋给临时建立的对象
            this->value++;
            return temp;       //返回临时建立的对象,
        }



    2.作为友元函数:

    先要在类内声明友元函数

        friend test operator++(test& a);
        friend test operator++(test& a,int);
    然后再类外定义

    test operator++(test& a) //前置运算符
    {
        a.value++;
        return a;
    }
    
    test operator++(test& a,int) //后置运算符
    {
        test temp(a);
        a.value++;
        return temp;
    }
    





    代码:


    #include <iostream>
    #include <string>
    
    using namespace std;
    
    //前置++是把对象加1后再给你用
    //后置++是把对象的值借你,再把对象本身加1
    
    
    class test
    {
        int value;
    public:
        test():value(0){}      //无参构造函数
        test(int n):value(n){} //有参...
        friend ostream& operator<<(ostream& output,test a); //重载插入运算符
        friend istream& operator>>(istream& input,test& a); //重载提取运算符
    
        test operator++() //前置运算符
        {
            this->value++;
            return *this;
        }
    
        test operator++(int) //后置运算符
        {
            test temp(*this);
            this->value++;
            return temp;
        }
    
    };
    
    ostream& operator<<(ostream& output,test a)
    {
        output<<a.value;
        return output;
    }
    
    istream& operator>>(istream& input,test& a)
    {
        cout<<"请输入对象的值value: ";
        input>>a.value;
        return input;
    }
    
    int main ()
    {
        test a;
        cin>>a;
        cout<<"++a "<<++a<<endl;
        cout<<"a++ "<<a++<<endl;
        cout<<"a   "<<a<<endl;
    
        return 0;
    }
    
    
    


  • 相关阅读:
    记一次java程序内存溢出问题
    js 对象数据观察者实现
    requirejs和seajs使用感受
    maven根据不同的运行环境,打包不同的配置文件
    Quartz .net 一直运行失败
    Sql2008R2 日志无法收缩解决方案
    win7 64位英文版 ado驱动
    KB4284826 远程桌面发生身份验证错误,要求的函数不受支持
    Delphi System.zip patch with ZIP64 and LZMA supports
    native excel 文件已经打开的判断
  • 原文地址:https://www.cnblogs.com/zhanyeye/p/9746116.html
Copyright © 2020-2023  润新知