讲义_06_运算符重载.ppt

  1. 1、本文档共123页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
讲义_06_运算符重载

面向对象程序设计 运算符重载 operator overloading 主要内容和教学要求 ★1、运算符重载的基本概念 ★2、常用运算符的重载 ★3、理解运算符重载的两种形式 1、基本概念 1.0为什么要重载运算符 ★应用系统的运算符集; ★为自定义类型提供简洁的表达式; Complex a, b, c; 不重载运算符: a.Print(); c = Add(a, b); 重载运算符:cout a; c = a + b; 1.1运算符重载的实现 运算符函数(operator function) Type a, b, c; cin a b; c = a + b; cout c; 1.2当前对象 调用成员函数的对象,对于该成员函数来说即为当前对象。 1.2当前对象(左操作数) 1.2关于当前对象的作用 1.左操作数作为当前对象调用运算符函数; 2.左操作数隐含地作为二元运算符的第一个参数; 3.用this指针或者直接访问左操作数的数据成员; 4.右操作数作为运算符重载函数的实参; 1.3运算符重载的限制 ★一个中心:不能够改变运算符的性质 操作数的个数; 优先级; 结合性; 语法结构; 1.3三个基本点 ★不能创建新的运算符 ★不能改变运算符的含义 ★不能仅仅操作基本数据类型(两个操作数中必须有一个自定义类型) 1.4可以不重载的运算符 默认情况下,不需要重载: 赋值运算符:= 地址运算符: 1.5不能重载和 经常重载的运算符 ★不允许重载的运算符 . .* :: ?: sizeof ★经常重载的运算符 算术运算符:+ - * / ++ -- 关系运算符: = = == != 赋值运算符:= += -= *= /= I/O运算符 : 一元运算符:[ ] () ! - 1.6运算符重载的形式 ★成员函数形式:运算符函数作为类的成员 ★非成员函数形式: 友元 外部函数(全局函数) 2、Complex类详解 成员函数形式 友元函数形式 2.0数据成员及构造函数 Complex—成员函数形式 2.1赋值运算符 2.2算术运算符的重载 2.2加法运算符的 实现及调用 2.3复合运算的运算符 2.4一元运算符的重载 成员函数形式的特点 函数定义:作为类的成员函数。 函数参数:二元运算符只带一个参数, 一元运算符不带参数。 函数调用:当前对象作为左操作数,函数参数作为右操作数。 a.operator + (b) 语法比较晦涩,不易理解 Complex—友元函数形式 2.5友元函数形式的重载 2.5友元函数形式的重载 2.6友元函数形式的特点 函数定义:作为类的友元函数 函数参数:二元运算符带两个参数, 一元运算符带一个参数 函数调用:两个对象都作为函数的参数 operator + (a, b); 是几元运算符就带几个操作数,语法符合习惯,易懂,但少用。 2.6成员函数形式遇到的问题 ★当运算符的左操作数不是该类的对象时,不能调用成员函数形式。 如 Complex a, b; 且重载:operator + (const Complex r) a = 3 + b; ★ 3不是Complex的对象,不能调用上述重载的运算符。因而不能计算。 ★当运算符可以交换时,需要提供其友元函数形式。 2.6友元函数形式的 另一类用法 2.7流插入符和提取符的重载 cin a b; cout a b; 运算符的左操作数cout不是Complex类的对象,因此必须采用友元形式的重载。 请分析下列运算符重载的形式 T为自定义类型,并设下列运算符都有定义。 [1]T a, b, c; int x; [2]cin a b c; cout a b c; [3]a = b; [4]c = b + a; c = b – x; [5]c = x + a; c = x – b; String类详解 逻辑非运算符 重载流插入和提取运算符 流插入符调用分析 复制构造函数 赋值运算符 字符串连接 “+、+=” 字符串比较—, = 字符串比较—, = 字符串比较—==, != 字符串比较—==, != 转换运算符 Rational类详解 求两个数的最大公约数 求两个数的最小公倍数 对分数进行标准化 各种构造函数 复制构造函数 成员函数形式 的重载 赋值运算符的重载

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档