使用虚函数实现多态性计算几何图形面积

需积分: 12 1 下载量 172 浏览量 更新于2024-09-02 收藏 57KB DOCX 举报
"本实验是关于C++编程的,主要涉及虚函数和多态性的应用。目的是通过创建不同类型的几何图形(三角形、矩形、正方形和圆)类,并利用虚函数计算这些图形面积之和。此外,还提供了两个C++代码示例,一个是关于时间管理的简单类`Time`,另一个是关于复数运算的类`Complex`。" 在C++中,虚函数是实现多态性的重要机制。多态性允许我们通过基类指针或引用调用派生类的重写函数,从而实现对不同对象的统一处理。在这个实验中,首先创建一个基类,比如`Shape`,它包含一个纯虚函数`getArea()`用于获取图形的面积。然后,为每种特定的几何图形(如Triangle、Rectangle、Square和Circle)创建派生类,并在这些派生类中重写`getArea()`函数。这样,我们就可以通过基类指针或引用调用`getArea()`,得到不同图形的面积,实现多态性。 例如: ```cpp class Shape { public: virtual double getArea() = 0; // 纯虚函数 }; class Triangle : public Shape { public: double getArea() override { // 实现三角形面积计算 } }; class Rectangle : public Shape { public: double getArea() override { // 实现矩形面积计算 } }; // 类似地,为正方形和圆定义 ``` 接着,可以创建一个`Shape`指针数组,存储不同类型的形状对象,然后通过遍历数组并调用`getArea()`来计算所有图形的面积之和。 提供的第一个代码示例是关于`Time`类的,它包含三个私有成员变量`hour`、`minute`和`second`,以及相应的构造函数、析构函数和成员函数。这个类展示了如何初始化和显示时间,以及如何通过拷贝构造函数创建对象的副本。 第二个代码示例是关于复数运算的`Complex`类。`Complex`类包含了复数的实部`real`和虚部`imag`,以及一些友元函数(如乘法、除法)和操作符重载(加法、减法、前缀递增和递减)。友元函数可以访问类的私有成员,而操作符重载使得复数运算更加直观。类中还定义了一个`display()`函数用于打印复数的值。 这个实验旨在让学生熟悉C++中的多态性和面向对象编程概念,同时通过`Time`和`Complex`类的实现,增强对类、构造函数、析构函数、成员函数以及操作符重载的理解。