当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《vc++课件》多态

资源类别:文库,文档格式:PPT,文档页数:20,文件大小:131.5KB,团购合买
一、多态的实现类型 二、联编的概念 三、静态联编和动态联编的区别 四、虚函数的声明
点击下载完整版文档(PPT)

多恋

多态

主要内容 ■多态的实现类型 联编的概念 静态联编和动态联编的区别 虚函数的声明

◼ 多态的实现类型 ◼ 联编的概念 ◼ 静态联编和动态联编的区别 ◼ 虚函数的声明 主要内容

■由乐器类 Instrumen派生出管乐器类Wind、铉乐器类 Stringed、打击乐器类 Percussion 请给出图中各类的定义,根据定义编写一个关于奏乐 的程序。 Instrument playo Wind Stringed Percussion playo playo playo

Instrument play() Wind play() Stringed play() Percussion play() ◼ 由乐器类Instrument派生出管乐器类Wind、铉乐器类 Stringed、打击乐器类Percussion。 ◼ 请给出图中各类的定义,根据定义编写一个关于奏乐 的程序

Instrument类的定义: class Instrument public void playo i cout<< instrument play<<endl Wind类的定义: class Wind: public Instrument public void play()∥改写基类的 Playa函数 i cout<< wind play?<<endl;

Instrument类的定义: class Instrument { }; public: void play() { cout<<“instrument play”<<endl; } Wind类的定义: class Wind:public Instrument { }; public: void play() //改写基类的play()函数 { cout<<“wind play”<<endl; }

Stringed类的定义: class Stringed: public Instrument public void playo /改写基类的 Iplay(函数 i cout<< stringed play'<<endl; Percussion类的定义: class percussion public Instrument public void play0改写基类的 playO函数 i cout<< percussion play <<endl; j

Stringed类的定义: class Stringed:public Instrument { }; public: void play() //改写基类的play()函数 { cout<<“stringed play”<<endl; } Percussion类的定义: class Percussion:public Instrument { }; public: void play() //改写基类的play()函数 { cout<<“percunssion play”<<endl; }

void tune( Wind i)/管乐器奏乐 iplay void tune( Stringed i)/铉乐器奏乐 i. playo void tune( Percussion i)/打击乐器奏乐 playo

void tune(Wind i) //管乐器奏乐 { } i.play(); …… void tune(Stringed i) //铉乐器奏乐 { } i. play(); …… void tune(Percussion i) //打击乐器奏乐 { } i. play(); ……

void main( void tune( wind i) Wind flute i playo Stringed violin Percussion drum void tune(Stringed i) tune(flute) tune(violin) playo tune(drum) void tune(Percussion i) 如果增加乐器种类,则 同样的代码要重复多次 i playo; 只有参数不同!

void main() { } Wind flute; Stringed violin; Percussion drum; tune(flute); tune(violin); tune(drum); 如果增加乐器种类,则 同样的代码要重复多次, 只有参数不同! void tune(Wind i) { } i.play(); void tune(Stringed i) { } i. play(); void tune(Percussion i) { } i.play(); …… …… ……

改进1: void tune( nstrument&i)/向上转型 class Instrument payO-际{ void play( i cout<< instrument play?< <endl; void maino Wind flute Stringed violin class Wind Percussion drum, tune(flute) 希望 void playo tune(violin) i cout<<Wind play<<endl;) tune(drum)

改进1: void tune(Instrument& i) //向上转型 { } i.play(); …… void main() { } Wind flute; Stringed violin; Percussion drum; tune(drum); tune (flute); tune (violin); class Wind { }; …… void play() { cout<<“Wind play”<<endl; } 希望 class Instrument { }; …… void play() { cout<<“instrument play”<<endl; } 实际

改进2:(在向上转型基础上) void tune( nstrument&i)/向上转型 ●。●● .playo class instrument public virtual void play()∥虚函数 i cout<<instrument play '<<endl; j

改进2:(在向上转型基础上) void tune(Instrument& i) //向上转型 { } i.play(); …… { }; public: virtual void play() //虚函数 { cout<<“instrument play”<<endl; } class Instrument

class Wind: public Instrument public vitual void play)∥ virtual可省略 i cout<< wind play <<endl; class Percussion public Instrument publIc virtual void play/ virtual可省略 i cout<< percussion play?<<endl

class Wind:public Instrument { }; public: vitual void play() //virtual可省略 { cout<<“wind play”<<endl; } class Percussion:public Instrument { }; public: virtual void play //virtual可省略 { cout<<“percunssion play”<<endl; }

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共20页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有