【6.13】定义基类Base,其数据成员为高h,定义成员函数disp为虚函数。然后再由High派生出长方体类Cuboid与圆柱体Cylinde。并在两个派生类中定义成员函数disp为虚函数。在主函数中,用基类Base定义指针变量pc,然后用指针pc动态调用基类和派生类中虚函数disp,显示长方体与圆柱体的体积。
#include<iostream>
using namespace std;
class Base{
public:
Base()
{
}
Base(double h1)
{
h=h1;
}
virtual void disp() //虚函数disp
{
cout<<"长方体和圆柱体的高度都是:"<<h<<endl;
}
protected:
double h; //高度
};
class Cuboid:public Base{ //长方体类
public:
Cuboid(double l=0,double w=0,double h=0):Base(h)
{
len=l, wid=w;
}
void disp() //虚函数disp
{ cout<<"长方体:"<<endl;
cout<<" 长度="<<len<<endl;
cout<<" 宽度="<<wid<<endl;
cout<<" 高度="<<h<<endl;
cout<<" 长方体的体积="<<len*wid*h<<endl;
}
private:
double len,wid; //长度和宽度
};
class Cylinder:public Base { //圆柱体类
public:
Cylinder(double r1=0,double h1=0):Base(h1)
{
r=r1;
}
void disp() //虚函数disp
{
cout<<"圆柱体:"<<endl;
cout<<" 半径="<<r<<endl;
cout<<" 高度="<<h<<endl;
cout<<" 圆柱体的体积="<<r*r*3.14*h<<endl;
}
private:
double r; //半径
};
int main()
{ Base *pc;
Cuboid cu(5,7,9);
Cylinder cy(5,7);
pc=&cu;
pc->disp();
pc=&cy;
pc->disp();
return 0;
}