21xrx.com
2024-09-20 05:49:45 Friday
登录
文章检索 我的文章 写文章
C++中定义矩形子类的多边形类(Polygon)
2023-06-24 10:59:03 深夜i     --     --
C++ 矩形子类 多边形类 定义 Polygon

在C++编程中,多边形类(Polygon)是一个比较常见的类。在实际应用中,我们可能需要定义一个矩形子类(Rectangle),让矩形具备多边形类的特性。本文将介绍如何在C++中定义矩形子类的多边形类(Polygon)。

首先,我们需要确定矩形子类(Rectangle)需要具备哪些属性和方法。每个多边形都有一组点构成其轮廓线,而矩形则可以用左上角和右下角两个点来表示。因此,我们可以定义一个矩形结构体,该结构体包含左上角和右下角的两个点。同时,矩形子类(Rectangle)需要继承多边形类(Polygon),以便重用多边形类已有的代码。

下面是矩形结构体的定义:

struct Rect

  Point ul; // 左上角

  Point br; // 右下角

;

其中,Point 是一个表示点的结构体。

接下来,我们需要为矩形子类(Rectangle)编写构造函数。由于矩形有左上角和右下角两个点,因此需要构造函数可以接受这两个点作为参数。同时,我们还需要调用多边形类(Polygon)的构造函数,以便完成矩形子类的初始化。

下面是矩形子类(Rectangle)的构造函数的定义:

Rectangle::Rectangle(Point ul, Point br) : Polygon(getVertices(ul, br), 4)

  this->ul = ul;

  this->br = br;

其中,getVertices 函数用于计算矩形的轮廓线上的四个顶点,返回一个包含这四个顶点的数组。Polygon 的第二个参数表示多边形的边数,即4条边。

最后,我们需要为矩形子类(Rectangle)重载多边形类(Polygon)的面积和周长计算函数。矩形的面积可以用左上角和右下角两个点的坐标差计算得出,周长可以用矩形的长和宽计算得出。因此,我们可以写出以下代码:

double Rectangle::getArea() const {

  return abs(br.x - ul.x) * abs(ul.y - br.y);

}

double Rectangle::getPerim() const {

  return 2 * (abs(br.x - ul.x) + abs(ul.y - br.y));

}

至此,我们就完成了矩形子类(Rectangle)的多边形类(Polygon)的定义。可以看出,矩形子类的定义并不复杂,主要是通过继承父类的方式重用父类的代码。因此,在实际应用中,我们可以根据需要定义更多的多边形子类,以便更好地复用代码和提高程序的可扩展性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复