21xrx.com
2024-12-22 21:33:11 Sunday
登录
文章检索 我的文章 写文章
C++实验报告:多态性
2023-07-04 23:00:22 深夜i     --     --
C++ 实验报告 多态性

多态性是面向对象程序设计(Object-Oriented Programming)中一个非常重要的概念,也是C++语言中的核心特性之一。它允许程序员使用同一个函数调用不同的对象,从而提高程序的可扩展性和可维护性。本次实验的目的就是深入了解C++中的多态性,以及如何正确地使用多态性进行程序设计。

实验内容

本次实验使用了C++语言的多态性特性,分别设计了一个父类Shape以及两个子类Rectangle和Circle。Rectangle和Circle都是Shape的派生类,它们具有各自不同的属性(如长、宽、半径等),但都具有一个共同的特性——面积。因此,在Shape类中定义了一个虚函数getArea(),然后在Rectangle和Circle中分别重载了getArea()函数以计算各自的面积值。

通过这样的设计,我们可以使用一个基类Shape的指针来调用子类Rectangle和Circle中各自的getArea()函数,实现多态性的效果。具体实现过程如下:

1. 定义父类Shape

定义Shape类,该类只有一个纯虚函数getArea(),用来计算不同图形的面积。具体代码如下:


class Shape {

public:

  virtual double getArea() = 0;

};

2. 定义子类Rectangle和Circle

在Rectangle和Circle类中,分别定义各自的长、宽、半径等属性,并重载Shape类中的纯虚函数getArea(),用来计算各自的面积。具体代码如下:


class Rectangle : public Shape {

public:

  double width, height;

  Rectangle(double w, double h) : width(w), height(h) {}

  double getArea() override {

    return width * height;

  }

};

class Circle : public Shape {

public:

  double radius;

  Circle(double r) : radius(r) {}

  double getArea() override {

    return 3.14 * radius * radius;

  }

};

3. 使用多态性

在主函数中,定义一个Shape类的指针,然后手动创建一个Rectangle和一个Circle对象,并分别将它们赋值给指针。然后通过指针调用各自的getArea()函数,实现多态性的效果。具体代码如下:


int main() {

  Shape* shape_ptr;

  Rectangle rect(5.0, 8.0);

  Circle circle(3.0);

  shape_ptr = ▭

  cout << "Rectangle's area = " << shape_ptr->getArea() << endl;

  shape_ptr = &circle;

  cout << "Circle's area = " << shape_ptr->getArea() << endl;

  return 0;

}

实验结果

经过测试,本次实验的程序运行正常,输出了Rectangle和Circle对象的面积值,如下所示:


Rectangle's area = 40

Circle's area = 28.26

结论

本次实验通过使用C++语言的多态性特性,实现了一个基类和两个派生类之间的多态调用,并成功计算了两个不同形状的图形的面积值。该实验充分展示了多态性的优越性和灵活性,同时我们也学习了如何正确地在C++中使用多态性进行程序设计。

  
  

评论区

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