一、要求

【项目】编写程序计算出球、圆柱和圆锥的表面积和体积。
【要求】

  1. 定义一个基类圆类至少含有一个数据成员半径
  2. 定义基类的派生类:球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数
  3. 在主函数中求球、圆柱、圆锥的表面积和体积

二、分析

分别定义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;
}

四、 结果

C++实验07

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