/*
【任务4】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。
设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。
*/
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: CSolid.cpp
* 作 者: 计114-3 王兴锋
* 完成日期: 2012 年 5 月 15 日
* 版 本 号: V 1.0
*/
#include <iostream>
using namespace std;
#define PI 3.1415926
//抽象类
class CSolid
{
public:
virtual double area() {return 0.0;}
virtual double getV() {return 0.0;}
};
//定义正方体类
class CCube : public CSolid
{
private:
double l;
public:
CCube(double l){this->l = l;}
double area(){return 6*l*l;}
double getV() {return l*l*l;}
};
//定义球体类
class CBall : public CSolid
{
private:
double r;
public:
CBall(double r){this->r = r;}
double area(){return 4*PI*r*r;}
double getV() {return 4*PI*r*r*r/3;}
};
//定义圆柱体类
class CCylinder : public CSolid
{
private:
double r, h;
public:
CCylinder(double r, double h){this->r = r, this->h = h;}
double area(){return (2*PI*r*r + 2*PI*r*r * h);}
double getV() {return h*PI*r*r;}
};
void show(CSolid *p);
int main()
{
//定义各类对象
CCube cc(12.6);
CBall cb(4.5);
CCylinder ccy(4.5, 8.4);
cout << "CCube cc(12.6)" << endl;
show(&cc);
cout << "CBall cb(4.5);" << endl;
show(&cb);
cout << "CCylinder ccy(4.5, 8.4);" << endl;
show(&ccy);
system("pause");
return 0;
}
//定义输出函数
void show(CSolid *p)
{
cout << "表面积:" << p->area() << endl;
cout << "体积:" << p->getV() << endl;
}
/*
CCube cc(12.6)
表面积:952.56
体积:2000.38
CBall cb(4.5);
表面积:254.469
体积:381.704
CCylinder ccy(4.5, 8.4);
表面积:1196
体积:534.385
请按任意键继续. . .
*/