运算符重载——递增运算符重载

目录:
应用场景:
class MyInteger {
public:
	MyInteger() {
		m_A = 0;
	}
private:
	int m_A;
}
=================================
实现以下效果
MyInteger i;

cout << i << endl;// 打印0
cout << ++i << endl;// 前置递增:打印1
cout << i++ << endl;// 后置递增:打印1
cout << i << endl;// 打印2
实现递增运算符重载:
class MyInteger {
	friend ostream& operator<< (ostream& cout, MyInteger i);

public:
	MyInteger(int i) {
		m_A = i;
	}

	//前置递增运算符重载
	MyInteger& operator++() {
		++m_A;
		return *this;
	}

	//后置递增运算符重载
	MyInteger operator++(int) {
		
		//先记录当时结果
		MyInteger temp = *this;

		//实现递增
		this->m_A++;

		//返回之前记录的结果
		return temp;
	}

private:
	int m_A;
};

ostream& operator<< (ostream& cout, MyInteger i) {

	cout << i.m_A;
	return cout;
}


void main() {
	MyInteger i(10);

	cout << ++i << endl; //11
	cout << i++ << endl; //11
	cout << i << endl; //12

}

我们来看一下其中主要的代码:

  • 前置递增运算符重载
	MyInteger& operator++() {
		m_A++;
		return *this;
	}
  • 后置递增运算符重载
	//这里的int代表占位参数,可以用来区分前置递增和后置递增
	MyInteger operator++(int) {
		
		//先记录当时结果
		MyInteger temp = *this;

		//实现递增
		m_A++;

		//返回之前记录的结果
		return temp;
	}

两者的主要区别:

  • 前置递增运算符重载函数返回值是当前对象的引用
  • 后置递增运算符重载函数返回值是一个新的对象
  • 后置递增运算符重载函数有一个int占位参数,用与区别与前置递增

以上代码还实现了左移运算符重载:

ostream& operator<< (ostream& cout, MyInteger i) {

	cout << i.m_A;
	return cout;
}

关于左移运算符重载的详细介绍请看:运算符重载——左移运算符重载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值