欢迎来到天天文库
浏览记录
ID:57055441
大小:137.50 KB
页数:31页
时间:2020-07-30
《c++_第9章__多态性与虚函数课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++面向对象程序设计内蒙古科技大学目录第一章概述第二章C++程序设计初步第三章函数第四章数组和指针第五章类与对象第六章静态成员与友员第七章运算符重载第八章继承与派生第九章多态性与虚函数第十章模板第十一章流类库与输入输出第十二章命名空间与异常处理第九章多态性与虚函数9.1多态性概念9.2虚函数9.3纯虚函数与抽象类9.4综合例子多态,就是发送同一种消息,不同的对象会有不同的动作。多态包含多态重载多态强制多态参数多态静态多态动态多态前期联编编译阶段多态后期联编运行时多态9.1多态性概念9.2虚函数9.2.1用虚函数实现动态多态回顾例8.6voidmain(){CShape*
2、ps[3];CShapes("Red");CPointp1(10,10),p2(100,100),p3(50,50);CLinel(p1,p2,"Green");CCirclec(p3,20,"Black");ps[0]=&s;ps[1]=&l;ps[2]=&c;for(inti=0;i<3;i++)ps[i]->Draw();}程序运行结果为:DrawaShape.ThecolorisRedDrawaShape.ThecolorisGreenDrawaShape.ThecolorisRedBlack虽然父类的指针可以指向子类的对象,但调用的函数Draw()都是父类CSh
3、ape的成员函数为了能通过基类的指针调用派生类的成员函数,可以使用虚函数的方法,即把成员函数Draw()声明为虚函数。例9.1用虚函数实现动态多态#include#includeclassCPoint{private:intX;intY;public:CPoint(intx=0,inty=0){X=x;Y=y;}CPoint(CPoint&p){X=p.X;Y=p.Y;}intGetX(){returnX;}intGetY(){returnY;}};例9.1(续一)classCShape{private:charColor[10
4、];public:CShape(char*c){strcpy(Color,c);}virtualvoidDraw(){cout<<"DrawaShape.Thecoloris"<5、<<"DrawaLinefrom("<6、aCircleatcenter("<7、i]->Draw();}程序运行结果为:DrawaShape.ThecolorisRedDrawaLinefrom(10,10)to(100,100),withcolorGreenDrawaCircleatcenter(50,50)withradius20andcolorBlack9.2虚函数9.2.1用虚函数实现动态多态(续)总结:(1)将成员函数声明为虚函数,在函数原型前加关键字virtual,如果成员函数的定义直接写在类中,也在前面加关键字virtual。(2)将成员函数声明为虚函数后,再将基类指针指向派生类对象,在程序
5、<<"DrawaLinefrom("<6、aCircleatcenter("<7、i]->Draw();}程序运行结果为:DrawaShape.ThecolorisRedDrawaLinefrom(10,10)to(100,100),withcolorGreenDrawaCircleatcenter(50,50)withradius20andcolorBlack9.2虚函数9.2.1用虚函数实现动态多态(续)总结:(1)将成员函数声明为虚函数,在函数原型前加关键字virtual,如果成员函数的定义直接写在类中,也在前面加关键字virtual。(2)将成员函数声明为虚函数后,再将基类指针指向派生类对象,在程序
6、aCircleatcenter("<
7、i]->Draw();}程序运行结果为:DrawaShape.ThecolorisRedDrawaLinefrom(10,10)to(100,100),withcolorGreenDrawaCircleatcenter(50,50)withradius20andcolorBlack9.2虚函数9.2.1用虚函数实现动态多态(续)总结:(1)将成员函数声明为虚函数,在函数原型前加关键字virtual,如果成员函数的定义直接写在类中,也在前面加关键字virtual。(2)将成员函数声明为虚函数后,再将基类指针指向派生类对象,在程序
此文档下载收益归作者所有