21xrx.com
2024-09-20 00:48:12 Friday
登录
文章检索 我的文章 写文章
C++多态性实验报告
2023-06-29 05:42:04 深夜i     --     --
C++ 多态性 实验报告 继承 虚函数

本次实验旨在深入了解C++中多态性的概念和使用方法,以及体验在实际编程中应用多态性的优势。

C++中的多态性,是指在继承关系中,子类可以重写父类的虚函数,实现不同的行为,而通过父类指针或者引用来调用这些虚函数时,实际执行的是子类的版本。这种多态性,可以让程序更具有弹性和扩展性,方便地增加或修改功能,也有利于代码复用和维护。

具体实现时,我们定义一个基类Shape,有一个虚函数computeArea,计算图形面积;然后派生三个子类Rectangle、Square和Circle,分别实现这个computeArea函数,用不同的公式计算每个形状的面积。

在主函数中,声明一个Shape类型的指针,先将它指向一个Rectangle对象,调用computeArea函数输出面积;然后将这个指针指向一个Square对象,再次调用computeArea函数输出面积;最后将指针指向一个Circle对象,再次计算面积并输出。代码如下:


#include<iostream>

using namespace std;

class Shape{

public:

  virtual double computeArea()

    return 0;

  

};

class Rectangle:public Shape{

public:

  double computeArea(){

    double length=10,width=5;

    return length*width;

  }

};

class Square:public Shape{

public:

  double computeArea(){

    double side=4;

    return side*side;

  }

};

class Circle:public Shape{

public:

  double computeArea(){

    double pi=3.14,radius=2;

    return pi*radius*radius;

  }

};

int main(){

  Shape *p;

  Rectangle rect;

  Square sq;

  Circle c;

  p=&rect;

  cout<<"Rectangle Area: "<<p->computeArea()<<endl;

  p=&sq;

  cout<<"Square Area: "<<p->computeArea()<<endl;

  p=&c;

  cout<<"Circle Area: "<<p->computeArea()<<endl;  

  return 0;

}

运行程序,输出结果如下:


Rectangle Area: 50

Square Area: 16

Circle Area: 12.56

通过多态性,我们可以通过一个基类指针来调用不同子类的函数,这极大地提高了代码的灵活性和扩展性。如果需要添加一个新的形状,只需要新增一个子类,并实现computeArea函数,不影响现有的代码和功能。

综上,本次实验深入学习了C++中多态性的概念和应用,以及体验了在实际开发中应用多态性的优势,这对于我们提高编程水平、打造高质量代码有重要意义。

  
  

评论区

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