第11章 使用类——运算符重载(一)一个简单的运算符重载示例(Time类对象的加法)

本文介绍了C++中的运算符重载,通过一个Time类的示例说明如何重载+运算符,使得可以方便地对时间对象进行加法操作。通过重载,避免了使用显式的Sum()函数,使得代码更加直观和简洁。
摘要由CSDN通过智能技术生成

本文章是作者根据史蒂芬·普拉达所著的《C++ Primer Plus》而整理出的读书笔记,如果您在浏览过程中发现了什么错误,烦请告知。另外,此书由浅入深,非常适合有C语言基础的人学习,感兴趣的朋友可以自行阅读此书籍。

运算符重载

我们先了解下函数重载的概念,函数重载,也叫函数多态,指的是用户可以定义多个名称相同但特征标(参数列表)不同的函数,函数重载可以用同名的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。

运算符重载也是一种形式的C++多态,它将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。实际上,很多C++(包括C语言)运算符已经被重载。例如,将*运算符用于地址,将得到存储在这个地址中的值;但将它用于两个数字时,得到的将是它们的乘积。C++根据操作数的数目和类型来决定采用哪种操作。

**C++允许将运算符重载扩展到用户定义的类型。**例如,允许使用+将两个对象相加。编译器将根据操作数的数目和类型决定使用哪种加法定义。重载运算符可使代码看起来更自然。

运算符函数的格式如下:

operatorop(argument-list)

例如,operator+()重载+运算符,operator*()重载*运算符。op必须是有效的C++运算符,不能虚构一个新的符合。比如不能有operator@()这样的函数,因为C++中没有@运算符。

假设有一个Student类,我们为它定义了一个,operator+()成员函数,目的是将两个Student对象的总分相加。假设st1,st2,st3都是类对象,那么我们就可以这样写:

st3 = st1 + st2;

编译器发现,操作数是Student类对象,因此使用相应的运算符重载函数替换上述运算符:

st3 = st1.operator+(st2);

然后该函数隐式地使用st1(调用了方法),而显示地使用st2对象(被作为参数传递),来计算总和,并返回这个值。更重要的是,可以使用简单的+运算符表示法,而不必使用笨拙的函数表示法。

运算符重载示例,设计一个时间类

假设我们上午工作花了2小时35分钟,下午工作花了4小时40分钟,我们想要计算下总共花了多少时间,但要相加的单位与内置类型不匹配。因此我们可以实现一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值