当前课程知识点:C++语言程序设计进阶 >  第八章 多态性 >  运算符重载 >  双目运算符重载为成员函数

返回《C++语言程序设计进阶》慕课在线视频课程列表

双目运算符重载为成员函数在线视频

双目运算符重载为成员函数

运算符重载为成员函数

重载为类成员的运算符函数定义形式

    函数类型  operator 运算符(形参)
    {
           ......
    }
    参数个数=原操作数个数-1   (后置++、--除外)

双目运算符重载规则

例8-1复数类加减法运算重载为成员函数



下一节:单目运算符重载为成员函数

返回《C++语言程序设计进阶》慕课在线视频列表

双目运算符重载为成员函数课程教案、知识点、字幕

大家好

欢迎回来继续学习

C++语言程序设计

这一节我们来学习

如何将运算符

重载为类的成员函数

运算符呢

通过有双目运算符 单目运算符

在这一节呢

我们要分别来讲解

怎么样重载双目运算符

怎么样重载单目运算符

那么将运算符

重载为类的成员函数的时候

我们要用这样的形式

来定义这个运算符函数

其实呢

就跟定义类的普通成员函数

语法基本上是一样的

只是这个函数名不同

这里将operator这个关键字

和运算符合起来

作为函数名

当然了operator和关键字中间

还必须得有个空格

它们两个合在一起作为函数名

那么这样的一个运算符函数

它的形参表有什么规则呢

形参表里面的参数个数

应该是原有的操作数个数减1

比如说

要是一个双目运算符

那么形参里面

放的实际上是它第二个操作数

如果是前置的单目运算符呢

它就没有形参了

形参表就空了

但是如果是后置的单目运算符

那情况就有点特殊

稍后大家会看到

好 现在我们来看一下

怎么样重载一个双目运算符

那么如果呢我们要将

一个双目运算符比如说B

用B这个符号来代表

一个双目运算符

一个泛指的双目运算符

比如说

我们要将这个双目运算符B

重载为某个类的成员函数

使它能够去实现

这个表达式

操作数1 B 操作数2

让它实现这样一个表达式

那么怎么重载呢

这里我们要假设

这个操作数1所属的类

类名是A

也就是操作数1

是A类的对象

这里操作数1

必须是某个类的对象

如果它不是类的对象

左操作数如果是基本类型

我们是不能把这个运算符

重载为类的成员函数的

这样的情况呢

我们后面会介绍

要重载为非成员函数

好 那现在呢

第一个操作数oprd1

是A类的对象

那么我们就将B呢

重载为A类的成员函数

这个时候形参类型

就应该是操作数2

所属的类型

那么经过这样重载以后

如果程序中

出现了表达式

操作数1 B 操作数2

那么就相当于

通过操作数1这个对象

去调用operatorB这个函数

并且以操作数2为实参

下面呢

我们就通过这个实例

给大家演示一下

怎么样将一个双目运算符函数

重载为类的成员函数

在这个例题中呢

我们为复数类重载加法

和减法运算符函数

那么在这个例题中呢

要求将+ -运算

重载为复数类的成员函数

那么规则呢

当然就要遵循

数学里面的复数的

加减法的运算规则了

就是实部 虚部分别相加相减

那么在这个例题里面

我们要求两个操作数

都是复数类的对象

其实等看完这个例题以后

大家可以尝试一下

比如说让这个复数类

不仅可以实现复数加复数

复数减复数的运算

也要能够实现复数加实数

复数减实数的运算

怎么实现这一点呢

那我们就要再增加

不同形式的运算符重载函数

比如说让参数是实数

就可以实现这样的功能

那么大家看完这个例题以后呢

可以尝试自己改编

增加更多的运算符重载函数进去

实现更多的运算功能

但是如果大家想实现

实数加复数 实数减复数

那么用重载成员函数的方法呢

就不能够实现了

现在我们首先来看一下

这个题目的原代码

在这个复数类中

我们定义了加法运算符函数

还有减法运算符函数

这两个函数

它都是来实现双目运算符的

所以呢

括号里面的参数

就是它的右操作数

现在我们来看函数的实现

这是个函数体的实现

在函数体中呢

我们没有定义局部对象

来存储加法的结果

减法的结果

而是直接构造了

一个临时无名对象

作为结果返回给调用者

这个临时无名对象构造的时候

它的初始化参数呢

就分别是当前对象的实部

和参数对象的实部相加

当前对象的虚部

与参数对象的虚部相加

这样构成了初始化参数

实部和虚部

这也就是复数加法本身的规则

这样呢

就是构造这个临时无名对象以后

将这个临时无名对象

就返回给调用者

那减法的实现也是一样的

经过定义这样的加法和减法

运算符重载函数以后呢

我们看

在主函数中

我们定义了复数类对象c1 c2

然后我们就可以

对c1 c2进行减法操作

进行加法操作了

然后把运算结果呢

赋值给这个结果对象c3

这里我们也看到了

这个输出的情况

运算的结果是正确的

C++语言程序设计进阶课程列表:

第七章 继承与派生

-导学

--导学

-继承的基本概念和语法

--继承的基本概念和语法

-第七章 继承与派生--继承的基本概念和语法习题

-继承方式

--继承方式简介及公有继承

--私有继承和保护继承

-第七章 继承与派生--继承方式

-基类与派生类类型转换

--基类与派生类类型转换

-第七章 继承与派生--基类与派生类类型转换

-派生类的构造和析构

--派生类的构造函数

--派生类的构造函数举例

--派生类的复制构造函数

--派生类的析构函数

--第七章 继承与派生--派生类的构造和析构

-派生类成员的标识与访问

--访问从基类继承的成员

--虚基类

-第七章 继承与派生--派生类成员的标识与访问

-小结

--小结

-综合实例

--第七章综合实例

-实验七

--实验七

-第七章讲义

第八章 多态性

-导学

--导学

-第八章 多态性--导学

-运算符重载

--运算符重载的规则

--双目运算符重载为成员函数

--单目运算符重载为成员函数

--运算符重载为非成员函数

-第八章 多态性--运算符重载

-虚函数

--虚函数

--虚析构函数

--虚表与动态绑定

-第八章 多态性--虚函数

-抽象类

--抽象类

--第八章 多态性--抽象类

-override与final

--override与final

-第八章 多态性--override与final

-小结

--第八章小结

-综合实例

--第八章综合实例

-实验八

--实验八

- 第八章讲义

第九章 模板与群体数据

-导学

--导学

-模板

--函数模板

--类模板

-第九章 模板与群体数据--模板

-线性群体

--线性群体的概念

-第九章 模板与群体数据--线性群体

-数组

--数组类模板

--例9-4数组类应用举例

-链表

--链表的概念与结点类模板

--链表类模板

-第九章 模板与群体数据--链表

-栈

--栈类模板

--栈类模板课后习题

--例9-9 栈的应用

--例9-9 栈的应用课后习题

-队列

--队列类模板

-第九章 模板与群体数据--队列

-排序

--排序概述

--插入排序

--选择排序

--交换排序

-第九章 模板与群体数据--排序

-查找

--查找

--查找课后习题

-小结

--小结

-综合实例

--综合实例

-实验九

--实验九

- 第九章讲义

第十章 泛型程序设计与C++标准模板库

-导学

--导学

-泛型程序设计及STL的结构

--泛型程序设计的基本概念

--STL简介

-第十章 泛型程序设计与C++标准模板库--泛型程序设计及STL的结构

-迭代器

--迭代器

-第十章 泛型程序设计与C++标准模板库--迭代器

-容器的基本功能与分类

--容器的基本功能与分类

-第十章 泛型程序设计与C++标准模板库--容器的基本功能与分类

-顺序容器

--顺序容器的基本功能

--顺序容器的特征

--顺序容器的插入迭代器与适配器

--第十章 泛型程序设计与C++标准模板库--顺序容器

-关联容器

--关联容器分类和基本功能

--集合

--映射

--多重集合和多重映射

-第十章 泛型程序设计与C++标准模板库--关联容器

-函数对象

--函数对象

--函数适配器

-算法

--算法

-小结

--第十章小结

-综合实例

--综合实例

-实验十

--实验十

- 第十章讲义

第十一章 流类库与输入/输出

-导学

--导学

-I/O流的概念及流类库结构

--I/O流的概念及流类库结构

-第十一章 流类库与输入/输出--I/O流的概念及流类库结构

-输出流

--输出流概述

--向文本文件输出

--向二进制文件输出

--向字符串输出

-第十一章 流类库与输入/输出--输出流

-输入流

--输入流概述

--输入流应用举例

--从字符串输入

-第十一章 流类库与输入/输出--输入流

-输入/输出流

--输入/输出流

-第十一章 流类库与输入/输出--输入/输出流

-小结

--小结

-综合实例

--综合实例

-实验十一

--实验十一

- 第十一章讲义

第十二章 异常处理

-导学

--第12章导学

-异常处理的思想与程序实现

--异常处理的思想与程序实现

-第十二章 异常处理--异常处理的思想与程序实现

-异常处理中的构造与析构

--异常处理中的构造与析构

-第十二章 异常处理--异常处理中的构造与析构

-标准程序库异常处理

--标准程序库异常处理

-第十二章 异常处理--标准程序库异常处理

-小结

--第12章小结

-综合实例

--综合实例

-实验十二

--实验十二

- 第十二章讲义

双目运算符重载为成员函数笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。