++运算符重载

运算符的重载: 运算符与类结合,产生新的含义。 

运算符重载的作用:为了实现类的多态性(多态是指一个函数名有多种含义)

实现运算符的重载的方式:类的成员函数 或 友元函数(类外的普通函数)

++和--运算符的重载:

1、递增和递减一般是改变对象的状态,所以一般是重载为成员函数。

2、重载递增递减,一定要和指针的递增递减区分开。因为这里的重载操作的是对象,而不是指针(由于指针是内置类型,指针的递增递减是无法重载的),所以一般情况的递增递减是操作对象内部的成员变量。

3、递增和递减分为前置和后置情况,a = ++b;(前置), a = b++;(后置)。因为符号一样,所以给后置版本加一个int形参作为区分,这个形参是0,但是在函数体中是用不到的,只是为了区分前置后置。例如:

#include <iostream>
using namespace std;

// 例如这里的重载递增就是为了增加pos的值
class ca
{
public:
	int pos;

	//前置递增就是增加当前对象的pos的值,并且返回当前对象
	ca operator++() {
		pos++;
		return *this;
	}

	//后置递增就是增加当前对象的pos的值,并且返回增加pos之前的该对象
	ca operator++(int) {
		ca ret = *this;
		++*this;  //这个会调用上面的函数,其实这里可以换成pos++;
		return ret;
	}
};

int main()
{
	ca a, b;

	a.pos = 1;

	b = a++;
	cout << "b1:" << b.pos << endl;   // b1:1

	b = ++a;
	cout << "b2:" << b.pos << endl;   // b1:3

	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值