实验内容:
定义基类Base,其数据成员为高h,定义成员函数disp()为虚函数,由基类派生出长方体类和圆柱类,并在两个派生类中定义成员函数disp()为虚函数。在主函数中,用基类base定义指针p,用指针p动态调用虚函数disp(),显示面积。
虚函数:它是基类中的成员函数,并在派生类中被重载。
派生类中的虚函数必须与基类中的虚函数完全相同(返回类型,函数名,参数个数,参数类型的顺序)
#include <iostream>
using namespace std;
class Base{
protected:
double h;
public:
Base(double h1)
{ h=h1;
}
virtual void disp()=0;//纯虚函数
};
class cuboid:public Base{
private:
double wid,len;
public:
cuboid(double l,double w,double h1):Base(h1)//
{ len=l;
wid=w;
}
void disp()//
{ cout<<"长方体:"<<endl;
cout<<"长度: "<<len<<endl;
cout<<"宽度: "<<wid<<endl;
cout<<"高度: "<<h<<endl;
cout<<"长方体的体积: "<<len*wid*h<<endl;
}
};
class Cylinder:public Base{
private:
double r;
public:
Cylinder(double h1,double r1):Base(h1)//
{ r=r1;
}
void disp()
{ cout<<"圆柱体:"<<endl;
cout<<"高度: "<<h<<endl;
cout<<"半径: "<<r<<endl;
cout<<"圆柱体的体积: "<<3.1415*r*r*h<<endl;
}
};
int main()
{ Base *p;
Cylinder cy(6,5);
cuboid cu(5,6,8);
p=&cy;
p->disp();
p=&cu;
p->disp();
return 0;
}