一、要求
【项目】编写程序计算出球、圆柱和圆锥的表面积和体积。
【要求】
- 定义一个基类圆类至少含有一个数据成员半径
- 定义基类的派生类:球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数
- 在主函数中求球、圆柱、圆锥的表面积和体积
二、分析
分别定义Circle类,Ball类,Cylinder类,Cone类,并让Ball类,Cylinder类,Cone类分别继承Circle类,在Circle类中定义纯虚函数virtual void show() = 0,之后在Ball类,Cylinder类,Cone类中对show函数重写。在main函数中,分别新建Ball,Cylinder,Cone的指针,通过数据成员初始化采用成员初始化列表并调用show函数
三、代码
💻提示:所有实验源码已在github整理
#include <iostream> #include <string> using namespace std; #define PI 3.1415926
class Circle { public: double R; virtual void show() = 0; private:
};
class Ball :public Circle { public: Ball(double radius) { R = radius; } void show() { cout << "球的表面积为 " << 4 * PI*R*R << " 球的体积为 " << 4.00 / 3.00*PI*R*R*R << endl; } private:
};
class Cylinder :public Circle { public: Cylinder(double radius, double heigh) { R = radius; H = heigh; } void show() { cout << "圆柱的表面积为 " << 2 * PI*R*R + PI * 2 * R*H << " 圆柱的体积为 " << PI * R*R*H << endl; } private: double H; };
class Cone :public Circle { public: Cone(double radius, double heigh, double line) { R = radius; H = heigh; L = line; } void show() { cout << "圆锥的表面积为 " << PI * R*L + PI * R*R << " 圆锥的体积为 " << PI * R*R*H / 3 << endl; } private: double H; double L; };
int main() { Circle * ball = new Ball(2); ball->show(); delete ball;
Circle * cylinder = new Cylinder(2, 2); cylinder->show(); delete cylinder;
Circle * cone = new Cone(2, 2, 2); cone->show(); delete cone;
system("pause"); return 0; }
|
四、 结果

通过本次实验,学习了对类的继承与派生,利用共同成员R及函数重写极大简化了代码,组织结构清晰,可读性强,利于前期和后期的扩展以及维护