C++编程练习:多态实验——利用抽象类和纯虚函数,编程计算正方体、球体和圆柱体的表面积和体积。

简介: C++编程练习:多态实验——利用抽象类和纯虚函数,编程计算正方体、球体和圆柱体的表面积和体积。

例、要求利用抽象类和纯虚函数,编程设计一个程序计算正方体、球体和圆柱体的表面积和体积,具体要求如下:


1、设计一个抽象类为公共基类


2、设计成员函数source_area( ),求表面积;


3、设计成员函数volume( ),求体积;


4、定义数据成员r;


5、派生类cube、sphere、cylinder分别表示正方体类、球体类和圆柱体类。


程序如下:

//头文件
#include <iostream>
using namespace std;
#define PI 3.141265
class Solid             //定义抽象类
{
protected:
  double r;
  double s, v;
public:
  virtual double S() = 0;
  virtual double V() = 0;
  Solid(double a, double b, double c)
  {
  r = a;
  s = b;
  v = c;
  }
};
class Cube :public Solid
{
public:
  Cube(double a, double b, double c) : Solid(a, b, c)
  {
  }
  double S()
  {
  s = 6 * r * r;
  return s;
  }
  double V()
  {
  v = r * r * r;
  return v;
  }
};
class Sphere :public Solid
{
public:
  Sphere(double a, double b, double c) : Solid(a, b, c)
  {
  }
  double S()
  {
  s = 4 * PI * r * r;
  return s;
  }
  double V()
  {
  v = PI * r * r * r * 4 / 3;
  return v;
  }
};
class Cylinder :public Solid
{
protected:
  double high;
public:
  Cylinder(double h, double r, double a, double v) : Solid(r, a, v)
  {
  high = h;
  }
  double S()
  {
  s = 2 * PI * r * r + 2 * PI * r * high;
  return s;
  }
  double V()
  {
  v = PI * r * r * high;
  return v;
  }
};
double source_area(Solid* p)
{
  return p->S();
}
double volume(Solid* p)
{
  return p->V();
}
//主函数
#include"头文件.h"
#include <iostream>
using namespace std;
int main()
{
  char a;
  double r0, h;
  cout << "请输入正方体的边长:" << endl;
  cin >> r0;
  Cube cube(r0, 0, 0);
  cout << "正方体的表面积为:" << source_area(&cube) << endl << "正方体的体积为:" << volume(&cube) << endl;
  cout << "-------------------------";
  cout << "" << endl;
  cout << "请输入球体的半径:" << endl;
  cin >> r0;
  Sphere sphere(r0, 0, 0);
  cout << "球体的表面积为:" << source_area(&sphere) << endl << "球体的体积为:" << volume(&sphere) << endl;
  cout << "-------------------------";
  cout << "" << endl;
  cout << "请输入圆柱体的的底面半径:" << endl;
  cin >> r0;
  cout << "请输入圆柱体的的高:" << endl;
  cin >> h;
  Cylinder cylinder(r0, h, 0, 0);
  cout << "球体的表面积为:" << source_area(&cylinder) << endl << "球体的体积为:" << volume(&cylinder) << endl;
  system("pause");
  return 0;
}

测试结果如下:

1666890396722.jpg

以上就是本次C++的全部内容,感谢您的阅读和支持,篇幅较长,若有表述或者代码中的不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!


相关文章
|
23天前
|
编译器 C++ 开发者
C++一分钟之-C++20新特性:模块化编程
【6月更文挑战第27天】C++20引入模块化编程,缓解`#include`带来的编译时间长和头文件管理难题。模块由接口(`.cppm`)和实现(`.cpp`)组成,使用`import`导入。常见问题包括兼容性、设计不当、暴露私有细节和编译器支持。避免这些问题需分阶段迁移、合理设计、明确接口和关注编译器更新。示例展示了模块定义和使用,提升代码组织和维护性。随着编译器支持加强,模块化将成为C++标准的关键特性。
53 3
|
8天前
|
存储 编译器 C++
【C++】深度解剖多态(下)
【C++】深度解剖多态(下)
20 1
【C++】深度解剖多态(下)
|
17天前
|
存储 编译器 C++
|
8天前
|
Java 编译器 C++
【C++】深度解剖多态(上)
【C++】深度解剖多态(上)
22 2
|
18天前
|
程序员 C++
【C++】揭开C++多态的神秘面纱
【C++】揭开C++多态的神秘面纱
|
15天前
|
编译器 程序员 C++
【C++高阶】掌握C++多态:探索代码的动态之美
【C++高阶】掌握C++多态:探索代码的动态之美
18 0
|
16天前
|
存储 编译器 C++
C++基础知识(七:多态)
多态是面向对象编程的四大基本原则之一,它让程序能够以统一的接口处理不同的对象类型,从而实现了接口与实现分离,提高了代码的灵活性和复用性。多态主要体现在两个层面:静态多态(编译时多态,如函数重载)和动态多态(运行时多态,主要通过虚函数实现)。
|
8天前
|
设计模式 安全 编译器
【C++11】特殊类设计
【C++11】特殊类设计
28 10
|
13天前
|
C++
C++友元函数和友元类的使用
C++中的友元(friend)是一种机制,允许类或函数访问其他类的私有成员,以实现数据共享或特殊功能。友元分为两类:类友元和函数友元。类友元允许一个类访问另一个类的私有数据,而函数友元是非成员函数,可以直接访问类的私有成员。虽然提供了便利,但友元破坏了封装性,应谨慎使用。
41 9
|
8天前
|
存储 编译器 C语言
【C++基础 】类和对象(上)
【C++基础 】类和对象(上)