C++ 实验四 继承与派生1

175 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

🎬本文章是 【C++笔记】 专栏的文章,主要是C++黑马的笔记、自己的实验与课设
🔗C++笔记 传送门

一、要求

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

  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及函数重写极大简化了代码,组织结构清晰,可读性强,利于前期和后期的扩展以及维护