虚函数的作用.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:33 大小:263KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

虚函数的作用.ppt

虚函数的作用.ppt

预览

免费试读已结束,剩余 23 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第一章C++的初步知识第二章类和对象第三章再论类和对象第四章运算符重载第五章继承与派生第六章多态性与虚函数第七章输入输出流第八章C++工具6.1多态性的概念6.2一个典型的例子6.3虚函数6.4纯虚函数与抽象类6.1多态性的概念6.1多态性的概念6.2一个典型的例子①先声明基类point②再声明派生类circle类③最后声明cylinder类最后写出主函数6.2一个典型的例子6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.3虚函数6.4纯虚函数与抽象类6.4纯虚函数与抽象类6.4纯虚函数与抽象类6.4纯虚函数与抽象类6.4纯虚函数与抽象类#include<iostream.h>classshape{public:virtualfloatarea()const{return0.0;}//虚函数virtualfloatvolume()const{return0.0;}//虚函数virtualvoidshapeName()const=0;//纯虚函数};//抽象类不能也不必定义对象classpoint:publicshape{public:point(float=0,float=0);voidsetPoint(float,float);floatgetX(){returnx;}floatgetY(){returny;}virtualvoidshapeName()const{cout<<“point:”;}//对虚函数再定义friendostream&operator<<(ostream&,constpoint&);protected:floatx,y;};classcircle:publicpoint{public:circle(floatx=0,floaty=0,floatr=0);floatgetRadius()const;virtualfloatarea()const;//因为基类此函数定义为虚函数,所以在这里,不管有没有virtual,只要函数名、参数表相同,都是虚函数virtualvoidshapeName()const{cout<<“circle:”;}//对虚函数再定义friendostream&operator<<(ostream&,constcircle&);protected:floatradius;};//定义circle类成员函数circle::circle(floatx,floaty,floatr):point(x,y),radius(r){}classcylinder:publiccircle{public:cylinder(floatx=0,floaty=0,floatr=0,floath=0);voidsetHeight(float);virtualfloatarea()const;virtualfloatvolume()const;virtualvoidshapeName()const{cout<<“cylinder:”;}//对虚函数再定义friendostream&operator<<(ostream&,constcylinder&);protected:floatheight;};//定义cylinder类成员函数cylinder::cylinder(floata,floatb,floatr,floath):circle(a,b,r),height(h){}voidcylinder::setHeight(floath){height=h;}voidmain(){pointp1(3.2,4.5);circlec1(2.4,1.2,5.6);cylindercy1(3.5,6.4,5.2,10.5);p1.shapeName();//静态关联cout<<p1<<endl;c1.shapeName();//静态关联cout<<c1<<endl;cy1.shapeName();//静态关联cout<<cy1<<endl;shape*pt;//定义基类指针pt=&p1;//指针指向point对象p1pt->shapeName();//动态关联cout<<“x=“<<p1.getX()<<“,y=“<<p1.getY()<<“\narea=“<<pt->area()<<“\nvolume=“<<pt->volume()<<“\n\n”;6.4纯虚函数与抽象类习题:本章习题请上网查阅教学网页:http://staff.ustc.edu.cn/~lee