c++运算符重载中很多人易忘的小细节

在这里插入图片描述
运算符重载的基本格式
运算符重载的本质就是函数重载
类型说明符 operator 运算符 (参数列表)
{
函数体;//实现运算符功能的代码。
}

如果把 operator运算符”看作一个整体,把它看成函数名,上述定义不就是函数的定义吗?
其中, operator是关键字,函数的名字就是用 operator和其后的运算符共同组成的标识符共同组成的标识符。

在这里插入图片描述

运算符重载的基本规则

运算符重载时要遵循一定的规则,具体规则如下。
(1)只能重载C语言中已有的运算符,不能虚构新的运算符。
(2)运算符重载后不改变运算符的优先级顺序。例如,算术运算符“”和“”的优先级 高于“+”和“”,那么,在类中重载这些运算符后,“兴”和“”的优先级仍然高于“+”和 “”。只有括号能改变运算符的运算顺序。
(3)运算符重载后不改变运算符的结合性。例如,赋运算符“=”是右结合的,那么运 算符“=”被重载后仍然是右结合的。
(4)运算符重载后不改变操作数的个数。例如,关系运算符“>=”是双目运算符,那么 “>=”被重载后仍然是双目运算符;而“+”既可以是单目运算符,也可以是双目运算符,那 么“”既可以被重载为单目运算符,也可以被重载为双目运算符。
(5)运算符重载后不改变运算符原有的语义。例如,双目运算符“+”在算术运算中表示两数相加,那么“+”重载到类中仍然表示两个操作数的相加。如果改变了“+”的语义会 显得莫名其妙,极大地降低程序的可读性。
(6)运算符重载时操作对象至少应该有一个是自定义的类对象(或类对象的引用),即 不能为基本数据类型重载运算符。
(7)有五个常用运算符不允许被重载。并不是所有运算符都可以重载,以下五个运算 符不允许被重载:成员访问运算符“”、成员指针运算符“”、域运算符“:”、条件运算符 “?:”和 sizeof运算符。另外,强制类型转换运算符( static_cast、 const_cast、 dynamiccast和 reinterpret cast)、 alignof和 typeid也不能被重载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值