C++递增运算符重载

C++的递增运算符重载分  前置递增重载和 后置递增重载

前置递增原理:对对象本身进行自增,不断地返回对象本身;

例子:

 int a = 0;
    cout << "++a=" << ++a << endl;
    cout << "a=" << a << endl;

    int b = 0;
    cout << "++(++b)=" << ++(++b) << endl;
    cout << "b=" << b << endl;

 

第一次++a的时候,++a已经等于1。++(++b)的时候,b=2;可以知道前置递增是对对象b进行++,返回b本身。下一次再递增也是使用这个对象b,再返回这个对象b。

后置递增原理:创建一个新对象  先对原对象本身进行自增,然后返回新对象 ;

例子:

int a = 0;

int b=
    cout << "a++=" << a++ << endl;
    cout << "a=" << a << endl;

可以看到,(a++)本身就是没有任何变化,a却发生了变化

直观一点,可以创建一个变量b接收(a++)数据本身

    int a = 0;

    cout << "a=" << a << endl;
    int b = a++;
    cout << "b=" <<b<< endl;
    cout << "a=" << a << endl;

可以看出 ,b接收了(a++)这个数据,但是b的数据值确是原a递增前的数据。 所以可以认为后置递增的原理:定义一个新对象,然后对原先的对象进行了自增,返回的时候返回新对象。

这里注意,虽然返回的是新对象,但是后置递增的过程中原对象却发生了改变。就像 之前输出a++以后,a的值改变了一样,这里需要注意。

代码:

#include<iostream>
using namespace std;

//重载递增运算符

class Person
{
public:
	//默认构造
	Person()
	{
		
	}
	//有参构造
	Person(int num)
	{
		Num = num;
	}
	//前置递增
	Person& operator++() {
		//对象本身数据进行++运算
		this->Num++;
		//返回对象本身
		return *this;
	}
	//后置递增
	Person operator++(int) { //int 占位参数,区分前置后置递增
		//临时对象记录 当前数据
		Person temp = *this;
		
		//对象本身数据++
		this->Num++;

		//返回临时的对象
		return temp;
	}

	int Num;
};

//重载<<运算符;
ostream& operator<<(ostream&cout,Person p) {
	cout << p.Num << " ";
	return cout;
}

void test01()
{

	//前置递增
	Person p(0);
	cout << "++p=" << ++p << endl;
	cout << "++(++p)=" << ++(++p) << endl;

	//后置递增
	Person p2(0);
	cout << "p2++=" << p2++ << endl;
	cout << "p2=" << p2<< endl;





}
int main()
{
	test01();

	return 0;
}

这里要注意前置递增的返回值类型要加&,需要对同一个对象进行操作。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值