c++运算符重载

在 C++中,许多运算符都可以重载,但有一些运算符不能重载。以下是可重载的运算符和不可重载的运算符的分类说明。

可以重载的运算符

  1. 算术运算符:

+-*/(加、减、乘、除)

%(取模)

+=-=*=/=%=(复合赋值运算符)

++--(自增、自减)

+(正号)、-(负号)

  1. 关系运算符:

==(等于)

!=(不等于)

<(小于)

>(大于)

<=(小于等于)

>=(大于等于)

  1. 位运算符:

&(按位与)

|(按位或)

^(按位异或)

~(按位取反)

<<>>(左移、右移)

&=|=^=<<=>>=(复合位运算符)

  1. 逻辑运算符:

!(逻辑非)

&&(逻辑与)

||(逻辑或)

  1. 其他运算符:

[](下标运算符)

()(函数调用运算符)

->(成员指针访问运算符)

newdelete(动态内存分配和释放运算符)

new[]delete[](数组动态内存分配和释放运算符)

,(逗号运算符)

=(赋值运算符)

.*(成员访问运算符,但只能作为类的成员函数重载)

不能重载的运算符

  1. ::(域运算符)

  2. .*(成员指针访问运算符,只能作为类的成员函数重载)

  3. .*=(复合成员指针访问运算符)

  4. ?:(三目运算符)

  5. sizeof(大小运算符)

  6. typeid(类型信息运算符)

重载运算符的限制

  1. 不能改变运算符的优先级和结合性:

• 运算符的优先级和结合性是固定的,重载不会改变这些特性。

  1. 不能改变运算符的操作数数量:

• 例如,+是二元运算符,重载后仍然需要两个操作数。

  1. 不能创建新的运算符:

• 只能重载已有的运算符。

  1. 重载函数的参数必须至少有一个用户定义类型的参数:

• 重载运算符的函数必须至少有一个参数是用户定义的类或结构体类型。

  1. 某些运算符只能作为类的成员函数重载:

• 例如,=(赋值运算符)、[](下标运算符)、()(函数调用运算符)、->(成员指针访问运算符)。

通过重载运算符,可以为用户定义的类或结构体提供更自然的语法支持,使代码更易读、更易维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值