C++ 实验:类的多态性——基类与派生类操作

版权申诉
0 下载量 103 浏览量 更新于2024-08-26 收藏 83KB PDF 举报
"C++第三次实验涉及的是类的多态性,通过创建基类Shape和几个派生类(如Circle、Square、Rectangle),实现不同形状对象的周长、面积计算及显示功能。实验中使用了纯虚函数来实现抽象接口,并通过基类指针操作派生类对象,展示了C++中的多态特性。" 在C++编程中,多态性(Polymorphism)是面向对象编程的重要特性之一,它允许我们使用一个接口来表示多种不同的类型。在这个实验中,`Shape` 类作为基类,定义了一些纯虚函数,包括 `girth()`(求周长)、`area()`(求面积)和 `display()`(输出信息)。纯虚函数在C++中用 `=0` 表示,使得 `Shape` 成为一个抽象类,不能被实例化,但可以作为其他类的基类。 `Circle`、`Square` 和 `Rectangle` 类分别继承自 `Shape` 类,实现了基类中定义的纯虚函数。例如,`Circle` 类通过 `setRadius` 设置半径,然后使用 `girth()` 计算周长(2πr)和 `area()` 计算面积(πr²)。同样,`Square` 类使用 `setLen` 设置边长,`girth()` 返回4倍边长,`area()` 返回边长的平方。`Rectangle` 类虽然没有给出完整代码,但可以推测它将有类似的方法来设置长度和宽度,并计算相应的周长和面积。 在多态性应用中,可以声明一个基类指针数组,然后将不同类型的派生类对象的地址存储在该数组中。这样,通过基类指针调用虚函数时,会根据实际指向的对象类型执行相应的派生类重写的函数。例如,可以创建如下代码段: ```cpp Shape* shapes[3] = { new Circle(), new Square(), new Rectangle() }; for (int i = 0; i < 3; i++) { shapes[i]->display(); } ``` 这段代码创建了一个包含 `Circle`、`Square` 和 `Rectangle` 对象的 `Shape` 指针数组,并遍历数组调用 `display()` 函数。由于 `display()` 是虚函数,所以实际执行的将是各个派生类的 `display()` 实现,展示了C++的动态绑定(运行时多态)特性。 通过这个实验,你可以深入理解C++中的多态性以及如何利用它来设计灵活的代码结构。同时,也可以学习到如何使用抽象类定义通用接口,以及如何通过继承和重写虚函数来实现特定功能。这样的设计模式在实际开发中非常常见,特别是在需要处理多种不同但具有相似行为的对象时。