实验九多态性与虚函数(2)一、实验目的和要求1.了解多态的概念;2.了解虚函数的作用及使用方法;3.了解静态关联和动态关联的概念和用法;4.了解纯虚函数和抽象类的概念和用法二、实验内容和结果1.声明一个车(v ehicl e)基类,具有MaxS peed、weight等成员变量有Run、Stop等成员函数,由此派生出自行车(bicycl e)类、汽车(motorca r)类,自行车(bicycl e)类有高度(Height)等属性,汽车(motorc ar)有座位数(SeatNu m)等属性,类从bicy cle和motorca r派生出摩托车(motorc y cle)类,它们都有Ru n、Stop等成员函数,使用虚函数完成。
(各个类都必须定义构造函数和析构函数)#includ e<iostre am>usingnamesp ace std;classvehicl e{protec ted:floatMaxSpe ed;floatweight;public:~vehicl e(){}vehicl e(floatm,floatw):MaxSpe ed(m),weight(w){} virtua l void Run (){cout<<"车已经启动啦"<<endl<<endl;virtua l void Stop (){cout<<"vehicl e已经停啦"<<endl;}};classbicycl e: virtua l public vehicl e{protec ted:floatHeight;public:~bicycl e(){}bicycl e(floatm,floatw,floath):vehicl e( m,w),Height(h){}void Run (){cout<<"The height of bicycl eis:"<<Height<<endl<<endl;}void Stop (){cout<<"bicycl e已经停啦"<<endl;};classmotorc ar: virtua l public vehicl e{protec ted:int SeatNu m;public:~motorc ar(){}motorc ar(floatm,floatw,floats):vehicl e( m,w),SeatNu m(s){}void Run (){cout<<"The number of motorc ar's seat is:"<<SeatNu m<<endl<<endl;}void Stop (){cout<<"motorc ar已经停啦"<<endl;}};classmotorc ycle:public bicycl e, public motorc ar{public:~motorc ycle(){}motorc ycle(floatm,floatw,floath,floats):vehicl e( m,w),bicycl e( m,w,h), motorc ar(m,w,s){} void Run (){cout<<"MaxSpe ed:"<<MaxSpe ed<<endl;cout<<"weight:"<<weight<<endl;cout<<"The height is:"<<Height<<endl;cout<<"The number of seat is:"<<SeatNu m<<endl;}void Stop (){cout<<"motorc ycle已经停啦"<<endl;}};int main(){vehicl e a(108,53);bicycl e b(180,50,2);motorc ar c(180,80,5);motorc ycled(120,90,1.2,3);vehicl e *p[4]={&a,&b,&c,&d };for(int i=0;i<4;i++){p[i]->Stop();p[i]->Run();}return 0;}2.定义抽象基类S hape,由它派生出3个派生类:Ci rcle,Square,Rectan gle,Triangl e,Trapez oid(梯形)。