C++:运算符重载简介

目录

一:定义

二:格式

三:例子

四:规则


一:定义

运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义

二:格式

返回值类型 operator 运算符(形参表)
{
	……
}

三:例子

这里我们是重新定义了’+’这个运算符,让他能够完成坐标的相加

这就让’+’这个运算符被重载后,其原有的功能依然保留,没有丧失,又能完成特定情况下的任务。

#include <iostream>
using namespace std;
class complex
{
public:
	complex() 
	{ 
		left = 0; right = 0; 
	}//定义构造函数
	complex(double r, double i) 
	{
		left = r; right = i;
	}//构造函数重载
	complex operator +(complex& c2) //定义重载运算符'+'的函数,这里还有一个隐藏的this指针,实际上这里是c1和c2
	{
		complex c;
		c.left = right + c2.right;//实际上是C1.right+C2.right
		c.left = left + c2.left;//实际上是C2.left+C2.left
		return c;//返回局部对象
	}
	void out()//定义输出函数
	{
		cout << "(" << left << "," << right << ")" << endl;
	}
private:
	double left;
	double right;
};
int main()
{
	complex c1(80, 5), c2(5, -100), c3;
	c3 = c1 + c2;
	c1.out();
	c2.out();
	c3.out();
	return 0;
}

四:规则

1.c++不允许用户自己定义新的运算符,只能对已经有的运算符进行重载。
2.c++允许重载的运算符 

双目关系运算符:+,-,,/,%
关系运算符:==,!=,<,>,<=,>=,
逻辑运算符:||,&&,!
单目运算符:+,-,指针,&
自增自减运算符:++,–
位运算符:|,&,~,^,<<,>>
赋值运算符:=,+=,-=,=,/=,%=,&=,|=,^=,<<=,>>=
空间申请与释放:new,delete,new[],delete[]
其他运算符:()函数调用,->,->,逗号,[]下标


3.重载不能改变运算符运算对象的个数
4.重载不能改变运算符的优先级
5.重载不能改变运算符的结合性
6.重载运算符的函数不能有默认的参数
7.重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少应有一个使类对象(或类对象的引用)。也就是说,参数不能全部使c++的标志类型,以防止用户修改用于标准运算符的性质。
8.用于类对象的运算符一般必须重载,但是有两个例外,运算符“=”和运算符“&”。
“=”可以用于每个类对象,这是因为系统已经为每一个新声明的类重载了赋值运算符,它的作用是逐个复制类对象的成员。
&也不必重载,它能返回对象在内存中的地址。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值