C++:重载操作符 & 赋值操作符重载需要注意的问题

一、操作符重载

1.什么是操作符重载

就是把一些操作符通过关键字operator,组装成一个函数,关键字operator后面接需要重载的操作符符号

2.为什么需要重载操作符?

(1)简单、方便,比起封装一个函数,使用operator比较形象直观
(2)可以提高代码的可读性
(3)为了处理自定义类型和内置类型之间的运算

3.操作符重载的格式

函数的返回类型 operator 操作符(参数列表)

例如:int operator=(int a,int b);

ps:操作符重载也是一个函数,具有返回值和参数,此函数的形参个数与操作符的操作数目相关,例如 ‘+’ 是双目操作符,也就是说 ’+‘ 是有两个参数的,那重载’+‘时,就需要两个参数。

4.不能被重载的操作符

1).        //成员选择符2).*       //成员对象选择符3)::       //域解析操作符4)?:       //条件操作符5sizeof   

ps:除了赋值号(=)外,基类中被重载的操作符都将被派生类继承
###5.重载操作符注意事项

(1)不能通过连接其他符号来创建新的操作符,例如operator@
(2)重载操作符时必须有一个类类型或者枚举类型的操作数
(3)用于内置类型的操作符被重载时,其含义不能被改变,例如操作符加号(+)就是用来求和的,重载后,不能改变此操作符的意义
(4)作为类成员的重载函数,其形参的数目看起来比操作数数目少一个,这是因为成员函数的操作符有一个默认的形参this,限定为第一个参数
(5)一般将算术操作符定义为非成员函数,赋值运算符定义为成员函数
(6)操作符定义为类的成员函数时,一般将其定义为类的友元函数
(7)操作符:==和!=一定要成对重载
(8)下标操作符[ ]:重载此操作符时,需要重载两个,一个是非const成员并返回引用,一个是const成员并返回引用
(9)在重载操作符:解引用操作符*和->时,不显示任何参数
(10)重载前置++(前置–)时,返回值是以引用的形式返回,而且没有参数
(11)重载后置++(后置–)时,返回值是值的形式返回,但是需要一个参数,此参数没有任何作用,只是为了与前置++区分,也是为了和前置++构成重载,此参数编译器自动维护。
(12)输入操作符>>和输出操作符<<必须定义为类的友元函数

前置++(--)
这里写图片描述
ps:前置++和前置- -的原理相同
后置++
这里写图片描述
ps:后置++和后置- -的原理相同

6.重载操作符的优缺点

(1)优点

a.可以使程序更自然、更直观;
b.可以提高代码的可读性;
c.会使程序的效率增加

(2)缺点

a.会使类难以理解,也就是会降低代码的可读性;
b.可能也会程序的效率

二、赋值操作符重载

赋值操作符重载就是把等号(=)重载,形成一个函数
这里写图片描述
重载操作符赋值号时,一定要注意这四个问题,也就是说呢,这四个方面就是考点啦

猜你喜欢

转载自blog.csdn.net/dangzhangjing97/article/details/80847285
今日推荐