C 面向对象程序设计 ppt课件 C 面向对象程序设计 ppt课件 C++面向对象程序设计 蚌埠学院计算机系 C 面向对象程序设计 ppt课件 2021/3/26 C 面向对象程序设计 ppt课件 C++面向对象程序设计 第十章 运算符重载与类模板 2021/3/26 C 面向对象程序设计 ppt课件 学习目标 ⑴理解为什么要进行运算符重载,在什么情况下要进行运算符重载 ⑵掌握通过成员函数重载运算符,借助友元函数实现运算符重载 ⑶理解引用在运算符重载中的作用,引用作为参数和返回值的好处和用法 ⑷理解类型转换的必要性,能够在程序设计中正确应用类型转换 ⑸理解为什么要引入类模板的概念,掌握类模板的应用 2021/3/26 C 面向对象程序设计 ppt课件 10.1 为什么要进行运算符重载 10.1.1 运算符重载的例子 在程序中,经常会使用运算符,但C++中已经定义的运算符都是针对基本数据类型的,那么能否将它们用于复杂的类对象呢?在学习本章之前,我们往往是编写实现相应运算功能的函数来解决复杂类型的运算问题。首先来看一个复数加法运算的例子,请注意程序中,加法运算时表达式的书写形式。 【例6-1】复数的加运算。见教材P133 2021/3/26 C 面向对象程序设计 ppt课件 程序说明: 在【例10-1】为了解决复数的存储问题,在复数类Complex中,定义了两个私有成员变量:real(复数的实部)和imag(复数的虚部);并定义了公有的复数加法函数add()和友元输出函数print()显示复数。在main函数中定义了三个复数对象,使用加法函数add进行3个复数的相加,并输出结果。 在程序中三个复数相加的表达式为: c4 = c1.add(c2).add(c3); 用这种方式书写表达式,不仅形式复杂、不符合人们的日常书写习惯,而且不易理解;复数的运算越复杂,书写的表达式越困难,给使用自定义类编写程序带来诸多不便。如果能够像使用基本类型那样用运算符来书写复数运算表达式(如c4 = c1+c2+c3;),不仅书写简单,也更容易理解;这正是在C++中引入了运算符重载的意义所在。下面通过使用运算符重载进行复数加运算例子来了解如何进行运算符的重载。 2021/3/26 C 面向对象程序设计 ppt课件 【例10-2】使用运算符重载进行复数加运算 见教材P134 输出结果: 11+2i 程序说明: 该程序的作用和【例10-1】相同,只是用运算符重载函数代替了加法函数。 比较两个程序不难发现,【例10-2】中书写的复数相加表达式,含义清晰,便于书写。让复数类的使用变得更加简易。 程序中“+”运算符重载的定义如下: Complex operator +(Complex c); 它与一般函数的定义非常相似,不同的是运算符重载函数的名字(“operator +”)是由“operator”关键字和紧随其后的运算符“+”组成;关键字“operator”表明该函数是一个运算符重载函数。在【例10-2】中,该函数是作为类Complex的成员函数,因此把以这种方式的运算符重载称作重载为类运算符。 2021/3/26 C 面向对象程序设计 ppt课件 【例10-3】重载为友元运算符进行复数加运算 见教材P136 输出结果:11+2i 程序说明: 本例实现的功能与【例10-1】和【例10-2】完全相同。 本例中,“+”运算符重载函数的定义如下: Complex operator +(Complex c1,Complex c2); 由于该函数是一般的普通函数,不是类的成员函数,只是为能够访问类的私有数据成员,而把其声明为类的友元函数,因此在定义时参数表中必须指定两个参数:第1个参数作为运算符的左操作数,第2参数作为运算符的右操作数。 2021/3/26 C 面向对象程序设计 ppt课件 10.1.2 注意事项 C++对运算符重载作出了一定的限制和规定,在重载运算符时,需要注意以下几点: ⑴不是所有运算符都可以被重载。 C++的大部分运算符都可以被重载。可以重载的运算符如下: new new[] delete delete[] + - * / % ^ | ~ = += -= *- /= %= ^= = |= || ++ -- -* - () [] 其中,运算符()是函数调用运算符,[]是下标运算符。+、-、* 和 的一元、二元形式都可以被重载。
您可能关注的文档
最近下载
- 抗菌药物临床应用处方权考试试题(含答案).pdf VIP
- 《PBR次世代游戏建模技术》(微课版)课件全套 邱雅慧 0 课程导引、1 前期准备、2 -低模制作---9数字雕刻-战斧.pptx
- 2024-2025学年北京海淀清华附中外籍人员子女学校九年级下学期3月月考数学试题+答案解析.pdf VIP
- 标准图集-13G322-1-钢筋混凝土过梁 - 烧结普通砖、蕉压灰砂翩。蒸压粉煤灰砖砌体.pdf VIP
- Schneider Electric施耐德EasyPact CVS 63-250 电操说明书(中文).pdf
- 一年级上学期语文教学总结.pdf VIP
- 电子测量原理第2版 詹惠琴 古天祥第2章.ppt VIP
- 2025年南昌健康职业技术学院单招职业技能考试题库最新.docx VIP
- 电子测量原理第2版 詹惠琴 古天祥第1章.ppt VIP
- 鄂教版小学五年级上册劳技+第2课+我给家具做清洁【课件】.pptx VIP
原创力文档

文档评论(0)