自增运算符重载

#include<stdio.h>
#include <algorithm>
#include <iostream>
using namespace std;


class A
{

	public:
	
	A(int a_, char ch_):a(a_),ch(ch_){}
	void print(){   cout<<"a "<<a<<"  ch "<<ch<<endl;	}

	A & operator++()
	{
		a++;
		return *this;
	}
	A operator++(int c);

private:
	int a;
	char ch;
};

A A::operator++(int d)
{
	A t=*this;
	++*this;
	return t;
}

int main()
{
	A aa(3,'v');
	cout<<"A aa(3,'v');      ";
	cout<<"aa:  ";
	aa.print();

	A bb=aa++;
	cout<<endl<<"A bb=aa++;:   ";
	cout<<endl<<"bb:   ";
	bb.print();
	cout<<"aa  ";
	aa.print();

	cout<<endl<<"++aa:   ";
	++aa;
	aa.print();
	return 0;
}

 

 

i++ 和++i的重载。

++i返回的是引用,i++返回的是值。

几点结论:

1)++i效率更高一些。

2)重载时,++i返回引用;i++返回值,返回前先对原值做自增。

3)为了区别,i++的函数包含一个int参数。

 

但是:

1)重载时,只需要能区分出两个函数即可,因此如果只重载一个,就无所谓int参数问题。

2)也可以将int参数放在i++对应的函数上,没有问题。

3)只定义一个时,无论调用时i++还是++i形式,都将调用所定义的那个函数;定义两个时,如果隐式调用,那么就看返回值是引用还是值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值