实现一个模型的类层次结构:声明一个公共基类Model并派生出立方体(Cube)和圆柱体(Cylinder)两个类。
(把本题程序写成一个完整的程序也可,不一定分步书写。)
要求:
(1)声明Model为抽象基类,在其中声明一个求体积的纯虚函数(volume),且该类中具有一个数据成员m ,
此数据可作为立方体的边长、圆柱体底面圆半径。
(2)在两个派生类中添加适当的数据成员和构造函数。
(3)两个派生类都要覆盖抽象基类Model的求体积的纯虚函数(体积公式:立方体m3、圆柱体лm2h)。
在主函数中声明两个派生类的对象以及Model类型的指针,并通过该指针调用volume函数计算不同模型的体积。
#include<iostream>
using namespace std;
#define PI 3.1416
class Model {
public:
Model(double r) { m=r; }
virtual double volume() const=0;
protected:
double m;
};
class Cube: public Model {
public :
Cube (double=0.0) ;
virtual double volume() const;
};
Cube :: Cube (double a):Model(a){ }
double Cube:: volume () const {
return m * m* m;
}
class Cylinder: public Model {
public :
Cylinder (double=0.0, double=0.0) ;
virtual double volume() const;
private:
double h;
};
Cylinder:: Cylinder (double a, double b):Model(a),h(b) { }
double Cylinder:: volume () const {
return PI* m * m* h ;
}
int main()
{
Cube cub(2.4) ;
Cylinder cyl(1,2);
Model *p[]={&cub, &cyl};
for(int i=0;i<2;i++)
cout<<" volume ="<<p[i]->volume()<<endl;
return 0;
}