算术运算符重载后的总结

重载是为处理自定义类型的操作
#include <iostream.h>

class Overload
{
private:
	int a;
	int b;
	friend ostream& operator<<(ostream &out, Overload &one);

public:
	Overload(int a = 0, int b = 0)
	{
		this->a = a;
		this->b = b;
	}
	void show()
	{
		cout<<a<<"  +  "  <<b<<"z"<<endl;
	}
public:
//对象相减
	Overload operator-(Overload &two)
	{
		Overload tmp;
		tmp.a = this->a - two.a;
		tmp.b = this->b - two.b;
		return tmp;
	}
//对象整形
	Overload operator-(int x)
	{
		Overload tmp;
		tmp.a = this->a - x;
		tmp.b = b;
		return tmp;
	}

	Overload operator+(Overload &two)
	{
		Overload tmp;
		tmp.a = this->a + two.a;
		tmp.b = this->b + two.b;
		return tmp;
	}

	Overload operator+(int x)
	{
		Overload tmp;
		tmp.a = this->a + x;
		tmp.b = b;
		return tmp;
	}

	// 前置--
	Overload& operator--()
	{
		this->a--;
		this->b--;
		return *this;
	}

	// 前置++
	Overload& operator++()
	{
		this->a++;
		this->b++;
		return *this;
	}

	//后置--
	Overload operator--(int)
	{
		Overload tmp = *this;
		this->a --;
		this->b --;
		return tmp;
	}

	//后置++
	Overload operator++(int)
	{
		Overload tmp = *this;
		this->a ++;
		this->b ++;
		return tmp;
	}
};

ostream& operator<<(ostream &out, Overload &one)
{
	out<<"<<重载"<<endl;
	out<<one.a<<"  +  "<<one.b<<"z"<<endl;
	return out;
}

void main()
{
	Overload c1(1, 2), c2(4, 6);
	
	cout<<"对象减对象的两种表示"<<endl;
	Overload c3 = c1.operator-(c2);
	c3.show();
	
	Overload c4 = c1 - c2 ;
	c4.show();
	
	cout<<"对象减整形的表示"<<endl;
	Overload c5 = c2 - 1 ;
	c5.show();
	
	cout<<"对象加法同理略过"<<endl;
	cout<<endl;
	cout<<"前置--用法"<<endl;
	cout<<"x=--y,后x的值"<<endl;
	Overload c6 = --c2; 
	c6.show();
	cout<<"x=--y,后y的值"<<endl;
	c2.show();

	c2++;

	cout<<"后置--用法"<<endl;
	cout<<"x=y--,后x的值"<<endl;
	Overload c7 = c2--; 
	c7.show();
	cout<<"x=y--,后y的值"<<endl;
	c2.show();
	
	cout<<c2;

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值