c++重载操作符

博客介绍了C++中重载操作符的相关知识。当重载操作符是名字空间函数时,操作符的左右操作数都会考虑转换。还说明了决定将操作符声明为类成员还是名字空间成员的规则,如左操作数类型、特定操作符要求等,对称操作符建议定义为名字空间成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当一个重载操作符是一个名字空间的函数时,对于操作符的第一个和第二个参数,即等于操作符的左和右两个操作数,都会考虑转换.

一般应该怎样决定是把一个操作符声明为类成员还是名字空间成员呢?在某些情况下程序员没有选择的余地:
1 如果一个重载操作符是类成员,那么只有当跟它一起被使用的左操作数是该类的对象时,它才会被调用.如果该操作符的左操作数必须是其他的类型,那么重载操作符必须是名字空间成员.
2 C++要求赋值= 下标[] 调用() 和成员访问箭头-> 操作符必须被定义为类成员操作符.任何把这些操作符定义为名字空间成员的定义都会被标记为编译时刻错误.
例如:
            // 错误: 必须是类成员
            char& operator[]( String & ,int ix );
3 除此之外由类设计者选择把操作符声明为一个类成员还是一个名字空间成员.如果有一个操作数是类类型,如String 类的情形,那么对于对称操作符,比如等于操作符最好定义为名字空间成员.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值