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


相关文章
|
17天前
|
安全 算法 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
43 3
|
19天前
|
安全 算法 编译器
【C++ 泛型编程 进阶篇】深入探究C++模板参数推导:从基础到高级
【C++ 泛型编程 进阶篇】深入探究C++模板参数推导:从基础到高级
239 3
|
19天前
|
算法 编译器 数据库
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
【C++ 泛型编程 高级篇】使用SFINAE和if constexpr灵活处理类型进行条件编译
243 0
|
19天前
|
设计模式 程序员 C++
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
192 2
|
18天前
|
存储 移动开发 安全
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
21 0
|
18天前
|
算法 编译器 C++
【C++ 模板编程 基础知识】C++ 模板类部分特例化的参数顺序
【C++ 模板编程 基础知识】C++ 模板类部分特例化的参数顺序
20 0
|
18天前
|
机器学习/深度学习 人工智能 算法
【C++ 职业方向】C++ 职业方向探索:工作职责、编程技能与MBTI人格匹配
【C++ 职业方向】C++ 职业方向探索:工作职责、编程技能与MBTI人格匹配
157 1
|
16天前
|
存储 C++ 容器
C++入门指南:string类文档详细解析(非常经典,建议收藏)
C++入门指南:string类文档详细解析(非常经典,建议收藏)
28 0
|
16天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
30 0
|
6天前
|
存储 算法 C语言
【C++初阶】8. STL初阶 + String类
【C++初阶】8. STL初阶 + String类
45 1