/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013.烟台大学计算机学院
* All rights reserved.
* 文件名称:
* 作 者:冯冬影
* 完成日期:2014 年 5月 27日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:
* 输入描述:
* 问题描述:
* 程序输出:
*/
#include <iostream>
#include <iomanip>
using namespace std;
class CSolid
{
public :
virtual float area()=0;
virtual float volume()=0;
protected:
float s;
float v;
};
class CCube:public CSolid
{
public :
CCube(float l=0):length(l) {}
virtual float area()
{
s=length*length*6;
return s;
}
virtual float volume()
{
v=length*length*length;
return v;
}
private:
float length;
float s;
float v;
};
class CCylinder:public CSolid
{
public:
CCylinder(float r=0,float h=0):radius(r),heigth(h) {}
virtual float area()
{
s=radius*radius*3.14+2*3.14*radius*heigth;
return s;
}
virtual float volume()
{
v=3.14*radius*radius*heigth;
return v;
}
private:
float heigth;
float radius;
};
class CBall:public CSolid
{
public :
CBall(float r=0):radius(r) {}
virtual float area()
{
s=4*3.14*radius*radius;
return s;
}
virtual float volume()
{
v=4*3.14*radius*radius*radius/3;
return v;
}
private:
float radius;
};
int main()
{
CSolid *p;
CCube c1(6);
p=&c1;
cout<<"正方体c1的面积为:";
cout<<p->area();
cout<<"体积为:";
cout<<p->volume();
cout<<endl;
CBall c2(4);
p=&c2;
cout<<"球c2的面积为:";
cout<<p->area();
cout<<"体积为:";
cout<< p->volume();
cout<<endl;
CCylinder c3(2,3);
p=&c3;
cout<<"圆柱c3的面积为:";
cout<<p->area();
cout<<"体积为:";
cout<<p->volume();
return 0;
}
运行结果
立体类族共有的抽象类
最新推荐文章于 2022-04-24 20:28:51 发布