现在我们来学习运算符重载
相信大家
一定迫不及待地想知道
对于自定义的类型
我们怎么能够使用
这些系统里面
预先定义好的运算符呢
比如说我们能够
做复数的加法运算吗
C++里面没有复数类型
所以
如果要实现复数
这样一种数据结构
我们就需要自定义一个复数类
那自定义了复数类以后
它的对象并不能使用
加法运算符来做运算
那么怎么办呢
其实很简单
我们只要为复数类
重载加法运算符就可以了
它就可以做加法了
当然减法也是一样的了
那么重载运算符呢
实际上
就是将C++语法
预定义好的这些运算符
针对新的自定义类型
赋予它新的含义
这就是运算符重载
首先呢
我们要来了解一下
运算符重载的基本语法规则
C++几乎可以重载
全部的运算符
而且只能够重载C++中
已经有的
不能创造新的运算符
在已有的运算符的集合里面呢
也有这么几个运算符
它是不能被重载的
就是这里列出来的这几个
重载之后呢
运算符的优先级和结合性
都是不会改变的
运算符重载是针对
新类型数据的新的实际需要
而产生的
那么实际上呢
就是对原有的运算符
针对新的自定义数据类型
将他的功能进行适当地改造
比如说
我们接下来例题中会看到
使用复数类的对象
进行加法运算
那我们就要为复数类去重载
+运算符
那么我们要让时钟
可以实现时间增加1秒
自增1秒的功能
我们就要对时钟类
去重载自增运算符
那么重载运算符
是通过什么来实现的呢
通过函数来实现的
运算符重载
跟函数重载的原理是一样的
也就是说
比如说我们要为复数类
重载加法运算符
那就写一个实现加法功能的函数
放在复数类里面
就可以实现这个功能了
当然了这个函数名呢
它规则上有点特殊
要用operator这个关键字
加上运算符
这样来当做函数名
后面我们会详细地介绍
这个语法的
不仅我们可以在类体里面
写一个运算符函数
用这样的方式
为这个类的对象去重载运算符
而且呢还可以在类外
写一个普通的全局函数
来重载运算符
为什么我们需要这样两种形式呢
因为不是所有的运算符
都可以放在类体里面
作为成员函数来重载的
如果有的运算符
对于这个类来说
不能作为成员函数来重载
那么就需要把它写在类外
作为独立的函数
这样两种方式
我们都可以实现
运算符的重载
在接下来的两节中呢
就会给大家分别介绍
将运算符重载为成员函数
以及将运算符重载为
非成员函数的方法