C++编程练习:多态实验——设计一个基类Shapes,Shapes类公有派生产生矩形类Rectangle和圆类Circle

简介: C++编程练习:多态实验——设计一个基类Shapes,Shapes类公有派生产生矩形类Rectangle和圆类Circle

例、设计一个基类Shapes,包含成员函数display()并声明为纯虚函数。Shapes类公有派生产生矩形类Rectangle和圆类Circle,分别定义display()函数实现其主要几何元素的显示。使用抽象类Shapes类型的指针(或引用),当它指向(或引用)某个派生类的对象时,就可以通过它访问该对象的虚成员函数display()实现动态多态性。


代码如下:


头文件:

//头文件
#include <iostream>
#define PI 3.141265
using namespace std;
class Shapes
{
public:
  virtual void display() = 0;  //成员函数dispaly()声明为纯虚函数
};
class Rectangle : virtual public Shapes
{
protected:
  float x, y;
public:
  float length;
  float width;
  Rectangle()
  {
  }
  Rectangle(float a, float b)
  {
  x = a;
  y = b;
  }
  virtual float getRectangle()
  {
  return (x * y);
  }
  virtual void display()
  {
  cout << "矩形的长为:" << x << endl;
  cout << "矩形的宽为:" << y << endl;
  cout << "矩形的面积为:" << getRectangle() << endl;
  }
};
class Circle : virtual public Shapes
{
protected:
  int r;
public:
  Circle()
  {
  }
  Circle(float R)
  {
  r = R;
  }
  virtual float getCircle()
  {
  return PI * r * r;
  }
  virtual void display()
  {
  cout << "圆的半径为:" << r << endl;
  cout << "圆的面积为:" << getCircle() << endl;
  }
};

主函数:

//主函数
#include <iostream>
#include "头文件.h"
#define PI 3.141265
using namespace std;
int main()
{
  Shapes* p;
  double a = 0, b = 0, r = 0;
  cout << "请分别输入矩形的长和宽:" << endl;
  cin >> a >> b;
  Rectangle A(a, b);
  p = &A;
  p->display();
  cout << "" << endl;
  cout << "请输入圆的半径:" << endl;
  cin >> r;
  Circle B(r);
  p = &B;
  p->display();
  system("pause");
  return 0;
}


测试功能:

1666890528401.jpg

代码测试成功!


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


相关文章
|
3天前
|
存储 C++
函数嵌套调用:C++编程的核心技术
函数嵌套调用:C++编程的核心技术
13 1
|
8天前
|
安全 前端开发 程序员
|
2天前
|
存储 设计模式 编译器
【C++】继承和多态常见的问题
【C++】继承和多态常见的问题
|
2天前
|
编译器 C++
【C++】多态 -- 详解(下)
【C++】多态 -- 详解(下)
|
2天前
|
编译器 Linux C++
【C++】多态 -- 详解(上)
【C++】多态 -- 详解(上)
|
2天前
|
存储 人工智能 算法
第十四届蓝桥杯C++B组编程题题目以及题解
第十四届蓝桥杯C++B组编程题题目以及题解
|
3天前
|
存储 编译器 C++
C++程序中的函数调用:模块化编程的基石
C++程序中的函数调用:模块化编程的基石
11 1
|
3天前
|
安全 程序员 编译器
C++程序中的基类与派生类转换
C++程序中的基类与派生类转换
8 1
|
1天前
|
设计模式 安全 Java
【C++】特殊类设计
【C++】特殊类设计
|
2天前
|
编译器 C++
【C++】类和对象(下)
【C++】类和对象(下)