【6.13】定义基类Base,其数据成员为高h,定义成员函效disp()为虚函数。然后,再由基类派生出长方体类Cuboid与圆柱体类Cylinder。并在两个派生类中定义成员函数disp()为虚函教。在主函数中,用基类Base定义指针变量pc,然后用指针pc动态调用基类与派生类中的虚函数disp(),显示长方体与圆柱体的体积。
#include<iostream>
using namespace std;
class Base{
public:
Base(double H)
{ h=H; }
virtual void disp()
{ cout<<"surprise!"<<endl; }
protected:
double h;
};
class Cuboid:public Base{
public:
Cuboid(double A,double B,double H):Base(H)
{ a=A;b=B; }
void disp()
{ cout<<a*b*h<<endl; }
private:
double a;
double b;
};
class Cylinder:public Base{
public:
Cylinder(double R,double H):Base(H)
{ r=R; }
void disp()
{ cout<<3.14*r*r*h<<endl; }
private:
double r;
};
int main()
{
Base *pc;
Cuboid cu(2,4,5);
Cylinder cy(5,7);
pc=&cu;
pc->disp();
pc=&cy;
pc->disp();
return 0;
}