C暑期实践课程第08讲

C暑期实践课程第08讲

ID:45057484

大小:572.50 KB

页数:39页

时间:2019-11-08

C暑期实践课程第08讲_第1页
C暑期实践课程第08讲_第2页
C暑期实践课程第08讲_第3页
C暑期实践课程第08讲_第4页
C暑期实践课程第08讲_第5页
资源描述:

《C暑期实践课程第08讲》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2021/7/15TsinghuaUniversity,lily12021/7/15TsinghuaUniversity,lily1第8讲多态性—运算符重载李莉(lily)清华大学计算机系2021/7/15TsinghuaUniversity,lily22021/7/15TsinghuaUniversity,lily2本讲总体纲要第1部分:多态性概念第2部分:运算符重载2021/7/15TsinghuaUniversity,lily32021/7/15TsinghuaUniversity,lily3第1部分:多态性概念2021/7/15TsinghuaUniversity,lily

2、42021/7/15TsinghuaUniversity,lily4纲要——第1部分:多态性概念多态性的概念多态性的形式2021/7/15TsinghuaUniversity,lily55多态性的概念多态性是面向对象程序设计的重要特征之一。多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。前者是在编译的过程中确定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态地确定操作所针对的具体对象。2021/7/15TsinghuaUniversity,lily66多态的形式常见形式函数重载运算符重载虚函数2021/7/15TsinghuaUniversity,lily

3、72021/7/15TsinghuaUniversity,lily7本讲总体纲要第1部分:多态性概念第2部分:运算符重载2021/7/15TsinghuaUniversity,lily82021/7/15TsinghuaUniversity,lily8第2部分:运算符重载2021/7/15TsinghuaUniversity,lily92021/7/15TsinghuaUniversity,lily9纲要——第2部分:运算符重载为何需要重载运算符?运算符重载的实质、形式以及规则和限制运算符重载为类的成员函数运算符重载为类的友元函数流运算符重载2021/7/15TsinghuaUni

4、versity,lily1010为何需要重载运算符?C++把用户定义的类和基本数据类型一样看待。系统为基本数据定义了运算符(如+-*/)。C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类)。允许用户自定义的类类型定义这些运算符。重新定义运算符的运算规则就称为重载运算符。运算符重载能提高程序可读性,但并不是必须的。运算符重载看作类中提供的另一种形式的接口。2021/7/15TsinghuaUniversity,lily1111问题举例——复数的运算classcomplex//复数类声明{public:complex(doubler=0.0,doubl

5、ei=0.0)//构造函数{real=r;imag=i;}voiddisplay();//显示复数的值complexadd(complexc2);//成员函数private:doublereal;doubleimag;};2021/7/15TsinghuaUniversity,lily1212complexcomplex::add(complexc2){complexc;c.real=c2.real+real;c.imag=c2.imag+imag;returncomplex(c.real,c.imag);}intmain()//主函数{complexc1(5,4),c2(2,10

6、),c3;c3=c1.add(c2);return0;}2021/7/15TsinghuaUniversity,lily1313问题举例——复数的运算用“+”、“-”能够实现复数的加减运算吗?complexc1(5,4),c2(2,10),c3;c3=c1+c2;实现复数加减运算的方法——重载“+”、“-”运算符2021/7/15TsinghuaUniversity,lily1414complexcomplex::operator+(complexc2){complexc;c.real=c2.real+real;c.imag=c2.imag+imag;returncomplex(c

7、.real,c.imag);}intmain()//主函数{complexc1(5,4),c2(2,10),c3;c3=c1+c2;//相当于c1.operator+(c2)return0;}2021/7/15TsinghuaUniversity,lily1515运算符重载的实质运算符重载是对已有的运算符赋予多重含义,实质就是函数重载。实现机制将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。编译系统对重载运算符的选择,遵循函数重载的选择原则

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。