本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
🎬本文章是 【C++笔记】 专栏的文章,主要是C++黑马的笔记、自己的实验与课设
🔗C++笔记 传送门
一、要求
【项目】编写程序计算出球、圆柱和圆锥的表面积和体积。 【要求】
- 定义一个基类圆类至少含有一个数据成员半径
- 定义基类的派生类:球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数
- 在主函数中求球、圆柱、圆锥的表面积和体积
二、分析
分别定义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及函数重写极大简化了代码,组织结构清晰,可读性强,利于前期和后期的扩展以及维护