C++运算符重载基础

运算符重载的规则

为什么要操作符重载

在C++编辑器中,如果你定义的一个类型是一个基础类型,那么我们进行一个运算的话完全没有任何的问题比如,int a,b,c; c=a+b;这里的加号和我们平常理解的加号意义是完全一样的,但是如果是类的话了,我们想做一个类的加减的话,这样就不行了。所以我们才用到运算符的重载达到我们的目的。

规则

可以重载的运算符

+ - * / % ^ & |        ~  ! = < > += -= *= /= %    ^= &= |= << >> >>=  <<=  ==  !=    <= >= && || ++ -- ->* ->  []  () new  delete new[] delete[]

不可以重载的运算符

. :: .* ?: sizeof

由于可以重载的运算符很多,所以我们只需要记住不可以重载的运算符。

重在运算符的限制

1.不改变运算符的优先级
2.不改变运算符的结合性
3.不改变运算符所需要的操作数
4.不能创建新的运算符

语法

类型   类名  ::  operator  op ( 参数表 )
{
 // 相对于该类定义的操作
}

代码

对着代码骑自行车

#include "iostream"

using namespace std;

class Complex
{
public:
	Complex(int a, int b);
	~Complex();
	
	void printCmp()
	{
		cout << "a=" << a << "b=" << b << endl;
	}

public:
	int a;
	int b;
};

Complex::Complex(int a, int b)
{
	this->a = a;
	this->b = b;
}

Complex::~Complex()
{
}

Complex add(Complex &c1, Complex &c2)
{
	Complex c3(c1.b + c2.a, c1.b + c2.b);
	return c3;
}

//运算符重载对+号的重载
Complex operator+(Complex &c1, Complex &c2)
{
	Complex c3(c1.a + c2.a, c1.b + c2.b);
	return c3;
}

void main()
{

	Complex c1(1, 2), c2(2, 3);
	//Complex c3 = add(c1, c2);
	Complex c3 = c1 + c2;
	c3.printCmp();
	/*int a = 10;
	int b = 11;
	int c = a + b;
	cout << c << endl;*/
	system("pause");
}
定义了一个类,类要对相应的数据进行相加减,这样我们看到c3=c1+c2如果没有操作符重载的话,只能通过add这个方法进行加减,如果有了操作符重载以后我们发现两个类直接进行加减,我们就可以直接得到对应的结果,这个很方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值