《C++语言程序设计》课程教学资源(PPT课件)第14讲 运算符重载

●●● ●●●●● 第14讲运算符重载 ●●●● ●●● ● ●运算符重载的概念、方法和规则 ●运算符重载作为类的成员函数 ●运算符重载作为类的友元函数 ●特殊运算符的重载 ●类型转换函数
1 第14讲 运算符重载 ⚫ 运算符重载的概念、方法和规则 ⚫ 运算符重载作为类的成员函数 ⚫ 运算符重载作为类的友元函数 ⚫ 特殊运算符的重载 ⚫ 类型转换函数

●●● ●●●●● 学习目标 ●●●● ●●● ● ●理解运算符重载的含义和规则; ●掌握运算符重载作为类成员函数和友元函数的 方法; 掌握常用运算符的重载,了解十+和-等特殊运 算符的重载; 理解不同类型数据间转换的概念和方法
学习目标 ⚫ 理解运算符重载的含义和规则; ⚫ 掌握运算符重载作为类成员函数和友元函数的 方法; ⚫ 掌握常用运算符的重载,了解++和--等特殊运 算符的重载; ⚫ 理解不同类型数据间转换的概念和方法。 2

●●● ●●●●● 第14讲运算符重载 ●●●● ●●● ● ●运算符重载的概念、方法和规则 ●运算符重载作为类的成员函数 ●运算符重载作为类的友元函数 ●特殊运算符的重载 ●类型转换函数
3 第14讲 运算符重载 ⚫ 运算符重载的概念、方法和规则 ⚫ 运算符重载作为类的成员函数 ⚫ 运算符重载作为类的友元函数 ⚫ 特殊运算符的重载 ⚫ 类型转换函数

●●● ●●●●● 什么是运算符重载 ●●●● ●●● ● (一)什么是重载( Overloading)? 1、重载重新赋予新的含义 2、函数重载 3、运算符重载—为已有的运算符赋予多重含义。 int a,b,cr c=a+b: cout<<c double x,y, Z, z=Xty; cout<<Z, 同一运算符作用于不同类型的数据具有不同实现
什么是运算符重载 (一)什么是重载( Overloading )? 1、重载——重新赋予新的含义 2、函数重载 3、运算符重载——为已有的运算符赋予多重含义。 4 int a,b,c; c=a+b; cout<<c; double x,y,z; z=x+y; cout<<z; 同一运算符作用于不同类型的数据具有不同实现

●●● ●●●●● 什么是运算符重载 ●●●● ●●● ● int sum.a=3.b=2 sum=atb: (int )=(int)+(int 系统自动 识别数据 float add, x=3.2, y-2.5 类型 add=x+y;(float)(float)+(float) char sti[4],cl[2]="a",c2[2}="b"; str=cl+c2; ( char *(char *) char 编译系统中的运算符“+”本身不能做这种运算,若 使上式可以运算,必须重新定义“+”运算符,这种 重新定义的过程成为运算符的重载
什么是运算符重载 5 int sum,a=3,b=2; sum=a+b; (int)=(int) + (int) float add, x=3.2, y=2.5; add=x+y; (float)=(float) + (float) 系统自动 识别数据 类型 char str[4], c1[2]="a", c2[2]="b"; str=c1+c2; (char *)=(char *) + (char *) 编译系统中的运算符“+”本身不能做这种运算,若 使上式可以运算,必须重新定义“+”运算符,这种 重新定义的过程成为运算符的重载

●●● ●●●●● 运算符重载的作用 ●●●● ●●● ● class A 运算符重载就是赋予已有的运算符多重 float x, y;含义。C艹通过重新定义运算符,使它 public 能够用于特定类的对象执行特定的功能。 A(float a=0, float b=0 Xa; y=b;) void main(void) {Aa(2,3),b(3,4) c=atb 两对象不能使用十,必须重新定义 }通过重载可使该运算符能像操作基本数据 类型一样,来操作用户自定义的数据类型
运算符重载的作用 6 class A { float x,y; public: A(float a=0, float b=0){ x=a; y=b; } } void main(void) { A a(2,3), b(3,4), c; c=a+b; } 两对象不能使用+,必须重新定义+ 运算符重载就是赋予已有的运算符多重 含义。C++通过重新定义运算符,使它 能够用于特定类的对象执行特定的功能。 通过重载可使该运算符能像操作基本数据 类型一样,来操作用户自定义的数据类型

●●● ●●●●● 运算符重载的作用 ●●●● ●●● ● ●运算符的重载从另一个方面体现了面向对象编 程技术的多态性,即同一运算符根据不同的运 算对象可以完成不同的操作。 为了重载运算符,必须定义一个函数,并告诉 编译器,遇到这个重载运算符时就调用该函数 ,由这个函数来完成该运算符应该完成的操作 。这种函数称为运算符重载函数
运算符重载的作用 ⚫ 运算符的重载从另一个方面体现了面向对象编 程技术的多态性,即同一运算符根据不同的运 算对象可以完成不同的操作。 ⚫ 为了重载运算符,必须定义一个函数,并告诉 编译器,遇到这个重载运算符时就调用该函数 ,由这个函数来完成该运算符应该完成的操作 。这种函数称为运算符重载函数。 7

●●● ●●●●● 运算符重载的方法 ●●●● ●●● ● 1、通过定义一个重载运算符函数来实现。 2、重载运算符函数的一般格式 函数类型 operator运算符(形参列表) 运算符的重载处理} 3、举例 重载“十”,实现复数加法运算
运算符重载的方法 1、通过定义一个重载运算符函数来实现。 2、重载运算符函数的一般格式 函数类型 operator 运算符 ( 形参列表) { 运算符的重载处理 } 3、举例 重载“+”,实现复数加法运算 8

●●● ●●●●● 运算符重载的规则 ●●●● ●●● ● ●只能对已有的运算符进行重载。 ●大部分运算符都可以重载,以下五个除外: 水 sizeof ●运算符重载后,“三不变”。 ●即原运算符的操作数的个数、优先级和结合性 都不变。 ●其他规则。P219
运算符重载的规则 ⚫ 只能对已有的运算符进行重载。 ⚫ 大部分运算符都可以重载,以下五个除外: . .* :: sizeof ? : ⚫ 运算符重载后,“三不变”。 ⚫ 即原运算符的操作数的个数、优先级和结合性 都不变。 ⚫ 其他规则。P219 9

●●● ●●●●● 第14讲运算符重载 ●●●● ●●● ● ●运算符重载的概念、方法和规则 ●运算符重载作为类成员函数 ●运算符重载作为类的友元函数 ●特殊运算符的重载 ●类型转换函数
10 第14讲 运算符重载 ⚫ 运算符重载的概念、方法和规则 ⚫ 运算符重载作为类成员函数 ⚫ 运算符重载作为类的友元函数 ⚫ 特殊运算符的重载 ⚫ 类型转换函数
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 东南大学:《C++语言程序设计》课程教学资源(PPT课件讲稿)Chapter 13 Object-Oriented Programming - Polymorphism.ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第四章 指令系统及汇编语言程序设计(4.1-4.4).ppt
- 多媒体技术及应用(PPT讲稿)多媒体音频技术.ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 13 Matrix Factorization and Latent Semantic Indexing.ppt
- 计算机网络技术基础(PPT课件讲稿).ppt
- PROGRAMMING METHDOLODGY AND SOFTWARE ENGINEERING(PPT讲稿)C Programming Review.ppt
- 《神经网络 Neural Networks》课程教学资源(PPT课件讲稿)Ch 8 Artificial Neural networks.pptx
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第五章 运输层.ppt
- 《Web编程实用技术教程》课程教学资源(PPT课件讲稿)第5章 MFC WinSock类的编程.ppt
- 《数字图像处理》课程PPT教学课件(讲稿)第二章 图像获取、显示和表示.ppt
- 香港中文大学:《Topics in Theoretical Computer Science》课程教学资源(PPT课件讲稿)量子计算 Quantum computing.pptx
- 香港科技大学:深度学习导论(PPT讲稿)Introduction to Deep Learning.pptx
- 北京大学软件研究所:高级软件工程(PPT讲稿)云计算与平台即服务.ppt
- 合肥学院:《数据库原理与应用》课程教学资源(PPT课件)第1章 数据库系统概述(主讲:叶潮流).ppt
- 《数据库原理与应用》课程PPT教学课件(SQL Server)第9章 存储过程和触发器.ppt
- 《The C++ Programming Language》课程教学资源(PPT课件讲稿)Lecture 02 Procedure-Based Programming.ppt
- 东南大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图.ppt
- 北京大学:《高级软件工程》课程教学资源(PPT课件讲稿)第一讲 软件与软件开发.ppt
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第二章 流密码(主讲:董庆宽).pptx
- 《Photoshop基础教程与上机指导》教学资源(PPT讲稿)第18章 扫描和修饰图像.ppt
- 淮阴工学院:《数据库原理》课程教学资源(PPT课件讲稿)第4章 结构化查询语言SQL.ppt
- 《计算机网络 COMPUTER NETWORKS》课程教学资源(PPT课件讲稿)Chapter 18 互联网协议 Internet Protocols(IP).ppt
- 计算机应用专业《计算机网络》教学大纲.doc
- 《计算机网络安全》课程教学资源(PPT课件讲稿)第四章 数据加密技术.ppt
- 西安培华学院:《计算机网络工程》课程教学资源(PPT课件讲稿)第1章 网络工程知识(主讲:张伟).ppt
- 对外经济贸易大学:《大学计算机基础》课程电子教案(PPT课件)第5章 PowerPoint幻灯片制作(PowerPoint 2010).pptx
- 中国地质大学(武汉):R语言入门教程(PPT讲稿).ppt
- 西南民族大学:软件需求分析与总体设计(PPT讲稿,主讲:殷锋).ppt
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 1 The Big Picture.ppt
- 系统编程工具REXX和CLIST.ppt
- 北京大学:基于信息利用的烟花算法研究(PPT讲稿)Research on Fireworks Algorithms from the Perspective of Information Utilization.pptx
- 《ARM嵌入式软件开发》课程教学资源(PPT课件讲稿)第三章 ARM体系结构及编程模型.ppt
- 《大型机系统管理技术》课程教学资源(PPT课件讲稿)第2章 大型服务器外存管理.ppt
- 《计算机组成原理》课程PPT教学课件(讲稿)第三章 计算机核心部件及其工作原理.ppt
- 《计算机网络概述》教学资源(PPT课件讲稿).ppt
- 面积对象编程(PPT讲稿)Object-Oriented Programming and Classes.ppt
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Evaluation & other classifiers.pptx
- 香港中文大学:Arm board tutorial Part 1 Using the ARM board And start working with C Tutorial 5 and 6.pptx
- 清华大学出版社:《JAVA程序设计实例教程》课程教材电子教案(PPT课件讲稿,共七章,主编:关忠).ppt
- 香港浸会大学:Community Search over Big Graphs:Models, Algorithms, and Opportunities.ppt