C++编程练习:抽象类——编写一个程序,计算三角形、正方形的面积,抽象出一个基类base。

简介: C++编程练习:抽象类——编写一个程序,计算三角形、正方形的面积,抽象出一个基类base。

例、编写一个程序,要求计算三角形、正方形的面积,抽象出一个基类base,在其中说明一个虚函数display( )用来展示其参数且求出面积。


代码如下:


头文件headfile.h:

#pragma once        //只运行一次头文件
#include <iostream>
using namespace std;
class base
{
public:
  virtual void display() = 0;   //成员函数dispaly()声明为纯虚函数
};
class Square : virtual public base     //派生类Square正方形
{
protected:
  float x;
public:
  float width;
  Square()
  {
  }
  Square(float a)
  {
  x = a;
  }
  virtual float getSquare()
  {
  return (x * x);
  }
  virtual void display()
  {
  cout << "正方形的边长为:" << x << endl;
  cout << "正方形的面积为:" << getSquare() << endl;
  }
};
class Rectangle : virtual public base    //派生类Rectangle三角形
{
protected:
  int a, h;
public:
  Rectangle()
  {
  }
  Rectangle(int a1, int h1)
  {
  a = a1;
  h = h1;
  }
  virtual float getRectangle()
  {
  return (a * h) / 2.0;
  }
  virtual void display()
  {
  cout << "三角形的底和高为:" << a << endl << h << endl;
  cout << "三角形的面积为:" << getRectangle() << endl;
  }
};


源文件源.cpp:

#include <iostream>
#include "headfile.h"
using namespace std;
int main()
{
  base* p;
  double a = 0, a1 = 0, h1 = 0;
  cout << "请输入正方形的边长:" << endl;
  cin >> a;
  Square A(a);
  p = &A;
  p->display();
  cout << "" << endl;
  cout << "请输入三角形的底和高:" << endl;
  cin >> a1 >> h1;
  Rectangle B(a1, h1);
  p = &B;
  p->display();
  system("pause");
  return 0;
}


测试:

1666917580901.jpg


相关文章
|
1月前
|
编译器 C++ 开发者
C++一分钟之-C++20新特性:模块化编程
【6月更文挑战第27天】C++20引入模块化编程,缓解`#include`带来的编译时间长和头文件管理难题。模块由接口(`.cppm`)和实现(`.cpp`)组成,使用`import`导入。常见问题包括兼容性、设计不当、暴露私有细节和编译器支持。避免这些问题需分阶段迁移、合理设计、明确接口和关注编译器更新。示例展示了模块定义和使用,提升代码组织和维护性。随着编译器支持加强,模块化将成为C++标准的关键特性。
65 3
|
1月前
|
存储 C++
【C++航海王:追寻罗杰的编程之路】一篇文章带你了解二叉搜索树
【C++航海王:追寻罗杰的编程之路】一篇文章带你了解二叉搜索树
17 1
|
1月前
|
存储 自然语言处理 C++
【C++航海王:追寻罗杰的编程之路】set|map|multiset|multimap简单介绍
【C++航海王:追寻罗杰的编程之路】set|map|multiset|multimap简单介绍
19 0
【C++航海王:追寻罗杰的编程之路】set|map|multiset|multimap简单介绍
|
29天前
|
存储 算法 编译器
程序与技术分享:C++模板元编程简介
程序与技术分享:C++模板元编程简介
19 0
|
29天前
|
存储 JavaScript 前端开发
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
|
29天前
|
自然语言处理 C语言 C++
程序与技术分享:C++写一个简单的解析器(分析C语言)
程序与技术分享:C++写一个简单的解析器(分析C语言)
|
29天前
|
存储 算法 编译器
程序与技术分享:C++模板元编程学习笔记
程序与技术分享:C++模板元编程学习笔记
|
1月前
|
C++
Clion CMake C/C++程序输出乱码
Clion CMake C/C++程序输出乱码
20 0
|
1月前
|
设计模式 编译器 C++
【C++航海王:追寻罗杰的编程之路】特殊类的设计方式你知道哪些?
【C++航海王:追寻罗杰的编程之路】特殊类的设计方式你知道哪些?
15 0