21xrx.com
2025-04-05 20:38:20 Saturday
文章检索 我的文章 写文章
C++多态性实验报告
2023-06-29 05:42:04 深夜i     15     0
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++中多态性的概念和应用,以及体验了在实际开发中应用多态性的优势,这对于我们提高编程水平、打造高质量代码有重要意义。

  
  

评论区