程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt

程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt

ID:50065702

大小:213.00 KB

页数:27页

时间:2020-03-08

程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt_第1页
程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt_第2页
程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt_第3页
程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt_第4页
程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt_第5页
资源描述:

《程序设计基础——C++ 教学课件 作者 刘玉英 第9讲多态性与虚函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、9.1多态性概述9.2运算符重载9.2.1重载为成员函数9.2.2重载为友元函数第9讲多态性与虚函数9.3虚函数9.4纯虚函数与抽象类9.5编程实例—日期类多态性是指不同的对象接受到相同的消息时产生不同的响应动作,例如对应相同的函数名,却执行了不同的函数体。9.1多态性概述多态性与前面介绍的继承、封装等一样,都是面向对象程序设计语言中的重要特征。一般来说,C++语言支持两种不同类型的多态:编译时多态和运行时多态。编译时多态主要通过函数重载和运算符重载实现,运行时多态主要通过虚函数来实现。运算符重载是对已有的运算符赋予多重含义,

2、使同一个运算符作用于不同类型的数据导致不同类型的行为。其主要优点在于用户自定义的数据类型可使用编译系统预定义的运算符。定义运算符重载函数的函数名字必须以operator开头。9.2运算符重载运算符重载是通过函数来实现的,而且运算符重载函数应能访问类的私有成员,所以,运算符重载函数有两种形式:成员函数友元函数#includeclassComplex//复数类声明{private:doublerealpart,imagpart;public:Complex(){realpart=0.0;imagpart=0

3、.0;}//构造函数Complex(doublec){realpart=c;imagpart=0;}Complex(doubler1,doublei1){realpart=r1;imagpart=i1;}doublereal(){returnrealpart;}//取复数的实部和虚部doubleimag(){returnimagpart;}Complexoperator+(Complexc)//算术运算符重载为成员函数{returnComplex(realpart+c.realpart,imagpart+c.imagpart)

4、;}voidDisplay(){cout<

5、(后置++、--除外)重载为友元函数时参数个数=原操作数个数,且至少应该有一个自定义类型的形参。(1)虽然运算符重载可以改变运算符原来的行为,但是它并不能改变运算符的优先级、结合性、操作数的个数。也不能创建新的运算符,只能重载现有的运算符。运算符重载具有非常强的灵活性。在应用时要注意以下几点问题:(3)在重载运算符()、[]、->或者=时,运算符重载函数必须声明为类的成员函数。对于其他的运算符,运算符重载函数可以是成员函数或者友元函数。(2)运算符重载函数的参数至少有一个必须是自定义类型。运算符可重载+-*/%^&

6、~!=<>

7、+=-=*=/=%=^=&=

8、=<<>>>>=<<===!=<=>=&&

9、

10、++--->,->[]()newdelete.*::?:sizeof不可重载表9.1可以重载和不可重载的运算符9.2.1运算符重载为成员函数案例6.2classClock//时钟类声明{public:Clock(intNewH=0,intNewM=0,intNewS=0)//构造函数{Hour=NewH;Minute=NewM;Second=NewS;}voidShowTime(){cout<

11、d<<“秒";}voidoperator++();//前置单目运算符重载voidoperator++(int);//后置单目运算符重载private:intHour,Minute,Second;};voidClock::operator++()//前置单目运算符重载{Second++;if(Second>=60){Second=Second-60;Minute++;if(Minute>=60){Minute=Minute-60;Hour++;Hour=Hour%24;}}cout<<"++Clock:";}运算符前置++和

12、后置++重载为时钟类的成员函数:操作数是时钟类的对象。实现时间增加1秒。voidClock::operator++(int)//后置单目运算符重载{Second++;if(Second>=60){Second=Second-60;Minute++;if(Minute>=60)

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

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

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