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


相关文章
|
30天前
|
安全 算法 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
47 3
|
1月前
|
安全 算法 编译器
【C++ 泛型编程 进阶篇】深入探究C++模板参数推导:从基础到高级
【C++ 泛型编程 进阶篇】深入探究C++模板参数推导:从基础到高级
248 3
|
1月前
|
存储 算法 编译器
【C++ TypeName用法 】掌握C++中的TypeName:模板编程的瑞士军刀
【C++ TypeName用法 】掌握C++中的TypeName:模板编程的瑞士军刀
237 0
|
1月前
|
安全 算法 C++
【C++泛型编程 进阶篇】模板返回值的优雅处理(二)
【C++泛型编程 进阶篇】模板返回值的优雅处理
32 0
|
1月前
|
安全 算法 编译器
【C++泛型编程 进阶篇】模板返回值的优雅处理(一)
【C++泛型编程 进阶篇】模板返回值的优雅处理
43 0
|
1月前
|
存储 网络协议 C语言
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
80 0
|
1月前
|
算法 编译器 数据库
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
246 0
|
1月前
|
机器学习/深度学习 算法 编译器
【C++ 泛型编程 中级篇】深度解析C++:类型模板参数与非类型模板参数
【C++ 泛型编程 中级篇】深度解析C++:类型模板参数与非类型模板参数
47 0
|
1月前
|
设计模式 程序员 C++
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
259 2
|
1月前
|
算法 安全 C++
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限(一)
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限
45 0