21xrx.com
2024-09-19 10:15:08 Thursday
登录
文章检索 我的文章 写文章
《C++多态性实验报告》
2023-06-22 05:09:10 深夜i     --     --
C++ 多态性 实验报告

本次实验中,我们学习了C++中的多态性,了解了其概念、实现以及应用。以下是本次实验的实验报告。

一、实验目的

通过本次实验,我们的主要目的是掌握C++中的多态性。具体包括以下几个方面:

1.了解多态性的概念和基本特点;

2.学习多态性的三种实现方式;

3.通过代码实现,了解多态性的应用。

二、实验过程

1.理解多态性的概念和基本特点

多态性是指同一个实体具有多种形态,是面向对象程序设计的一种基本特征。多态性有三个基本特点:

(1)继承:多态性是基于继承机制实现的,子类可以派生出多个不同的形态。

(2)重载:子类可以重载继承来的基类方法。

(3)覆盖:子类可以覆盖继承来的基类方法。

2.学习多态性的三种实现方式

C++中,多态性有三种实现方式:

(1)虚函数:基类中定义虚函数,在派生类中重新定义该虚函数。在程序运行时,通过指向基类对象的指针或引用来调用虚函数,编译器会根据实际类型动态地找到派生类中对应的函数实现。

(2)纯虚函数:基类中定义不含实现的纯虚函数,派生类在继承基类时必须要实现该函数。

(3)虚析构函数:当基类中有虚析构函数时,在删除指向派生类的基类指针时,可以调用派生类的析构函数。

3.通过代码实现,了解多态性的应用

我们通过一个简单的实例来了解多态性的应用。假设我们现在有这样一个问题:我们要设计一个形状类Shape,其中包含一个计算面积的虚函数。我们另外设计两个类Rectangle和Circle,均继承了Shape,并在其中重载了计算面积的函数。下面是具体代码实现:

#include

using namespace std;

class Shape // 基类

{

public:

  virtual float getArea() // 计算面积的虚函数

    return 0;

};

class Rectangle: public Shape // 派生类1

{

private:

  float width, height;

public:

  Rectangle(float w, float h)

    width = w;

    height = h;

  float getArea()

  {

    return width * height;

  }

};

class Circle: public Shape // 派生类2

{

private:

  float r;

public:

  Circle(float radius)

    r = radius;

  float getArea()

  {

    return 3.14 * r * r;

  }

};

int main()

{

  Shape *shape;

  Rectangle rect(3, 4);

  Circle circle(5);

  shape = ▭ // 指向Rectangle对象的指针

  cout << "Rectangle面积为:" << shape->getArea() << endl;

  shape = &circle; // 指向Circle对象的指针

  cout << "Circle面积为:" << shape->getArea() << endl;

  return 0;

}

在这个程序中,我们定义了一个基类Shape和两个派生类Rectangle和Circle,均继承自Shape。在Shape中定义了一个虚函数getArea(),子类Rectangle和Circle中重载了这个函数。在main函数中,我们声明了一个指向Shape对象的指针shape,并在之后指向了Rectangle和Circle的对象,分别调用了它们的getArea()函数,实现了多态性的应用。

三、实验总结

通过本次实验,我们理解并掌握了C++中多态性的概念、实现方式和应用。多态性是面向对象程序设计中的一个基本特点,可以大大提高程序的可扩展性和灵活性,是我们在日后程序设计中不可或缺的重要知识点。

  
  

评论区

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