C++程序设计语言学习笔记:运算符重载

本文详细介绍了C++中的运算符重载规则,包括成员函数和友元函数实现,以及类型转换的原理和使用。通过示例解释了如何使用operator+()和operator*()重载加法和乘法运算符,并探讨了自定义类型到内置类型隐式转换的方法。同时,讨论了运算符解析的过程,以及explicit关键字在类型转换中的作用。

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

1、程序员用complex::operator+()和complex::operator*()分别表示+和*的含义。当b和c的类型是complex时,b+c等价于b.operator+(c)。

2、对于任意一种二元运算符@,aa@bb可以理解成aa.operator@(bb)或者operator@(aa,bb)。对于任意一元后置运算符@,aa@可以理解成aa.operator@(int)或者operator@(aa,int)。

3、考虑二元运算符@的情况。假设x的类型是X,y的类型是Y,则x@y的解析过程是:

  • 如果X是一个类,查找X是否有成员operator@或者X的基类是否有成员operator@;
  • 在x@y的上下文中查找是否有operator@的声明;
  • 如果X定义在名字空间N中,在N的范围内查找operator@的声明;
  • 如果Y定义在名字空间M中,在M的范围内查找operator@的声明。

4、我们可以通过为源类型定义一个类型转换运算符来进行用户自定义类型向内置类型的隐式转换。成员函数X::operator T()定义了从X向T的类型转换,其中T是一个类型名。

class Tiny{
    char v;
public:
    operator int() const {return v;}        //转换成int的函数
}

5、把类型转换运算符声明为explicit并且明确只有当直接初始化时才使用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值