• C++ 递增/递减运算符重载


    作用: 通过重载递增运算符,实现自己的整型数据

    总结: 前置递增返回引用,后置递增返回值

    递增

    #include
    using namespace std;
    
    class MyInteger {
    private:
    	int m_Num = 0;
    public:
    	friend ostream& operator<<(ostream& out, MyInteger myint);
    	MyInteger() {
    		m_Num = 0;
    	}
    	//重载前置++运算符  返回引用是一直对一个数据进行递增
    	MyInteger& operator++() {
    		//先++
    		m_Num++;
    		//再返回
    		return *this;
    	}
    	//重载后置置++运算符
    	MyInteger& operator++(int) {  //int代表占位参数,可以用于区分前置和后置递增
    		//先返回
    		MyInteger temp = *this; 
    		//记录当前本身的值,然后让本身的值+1,但是返回的是以前的值,达到先返回后++
    		//再++
    		m_Num++;
    		return temp;
    	}
    };
    
    //重载左运算符
    ostream& operator<<(ostream& out, MyInteger myint) {
    	out << myint.m_Num;
    	return out;
    }
    
    void test01() {
    	MyInteger myInt;
    	cout << ++myInt << endl;
    	cout << myInt << endl;
    }
    
    void test02() {
    	MyInteger myInt;
    	cout << myInt++ << endl;
    	cout << myInt << endl;
    }
    
    
    int main()
    {
    	test01();
    	test02();
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    递减

    #include
    using namespace std;
    
    class MyInteger {
    private:
    	int m_num;
    public:
    	MyInteger() {
    		m_num = 0;
    	}
    	//!!!!!!! 必须用引用
    	MyInteger &operator--() {
    		//先++后运算
    		m_num--;
    		return *this;
    	}
    	//!!!!!!! 必须用引用
    	MyInteger &operator--(int) {
    		//先传值后++
    		MyInteger temp = *this;
    		m_num--;
    		return temp;
    	}
    	friend ostream& operator<<(ostream& out, MyInteger myint);
    };
    
    //重载左运算符
    ostream& operator<<(ostream& out, MyInteger myint) {
    	out << myint.m_num;
    	return out;
    }
    
    void test01() {
    	MyInteger myInt;
    	cout << --(--myInt) << endl;
    	cout << myInt << endl;
    }
    
    void test02() {
    	MyInteger myInt;
    	cout << myInt-- << endl;
    	cout << myInt << endl;
    }
    
    
    int main()
    {
    	test01();
    	test02();
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    IDEA Debug调试各个按钮说明
    反射_集合,,220816,
    LeetCode知识点总结 - 89
    Spring简介说明
    React基础: 项目创建 && JSX 基础语法 && React基础的组件使用 && useState状态 && 基础样式控制
    Python使用magic判断文件MIME类型
    Unix系统用户下载内容存放位置
    uniapp、小程序canvas相关
    IO:作业:线程:2. 要求用线程拷贝一张图片,一个线程拷贝前半部分,另一个线程拷贝后半部分
    工业动态界面设计 GLG Toolkit 4.2 Crack-GlgCE.4.2_x64
  • 原文地址:https://blog.csdn.net/weixin_55741769/article/details/134480799