C++编程:实现多态与抽象类

需积分: 10 2 下载量 179 浏览量 更新于2024-09-12 收藏 34KB DOC 举报
"C++实验-多态 - 沈阳工程学院" 在C++编程语言中,多态性是面向对象编程的一个核心概念,它允许我们使用一个基类的指针或引用操作不同派生类的对象。这个实验设计旨在帮助学生理解和应用多态性的基本原理,特别是通过虚函数和纯虚函数的使用。 实验目的主要有两个: 1. 掌握虚函数:虚函数是C++中实现多态的关键机制。当基类指针或引用指向派生类对象时,通过虚函数调用可以正确地调用派生类重写的函数,而不是基类的函数。这被称为动态绑定或运行时绑定。 2. 掌握纯虚函数:纯虚函数是在基类中声明但不提供具体实现的虚函数。定义含有纯虚函数的类成为抽象类,不能被实例化,但可以作为其他类的基类。这样,纯虚函数强制所有派生类提供自己的实现,确保了多态性。 实验环境要求: 实验需要在装有Windows XP操作系统的个人计算机上,使用Visual C++ 6.0作为开发工具进行。 实验内容涉及以下代码: 首先,声明一个名为`Shape`的抽象类,包含两个纯虚函数`GetArea()`和`GetPerim()`,这两个函数分别用于计算几何形状的面积和周长。由于它们是纯虚函数,`Shape`类不能被实例化。 接着,从`Shape`类派生出`Rectangle`和`Circle`类。`Rectangle`类具有两个整型成员变量`x`和`y`,表示矩形的长和宽,而`Circle`类有一个整型成员变量`r`,表示圆的半径。这两个派生类都实现了`GetArea()`和`GetPerim()`函数,根据各自的几何特性计算面积和周长。 在主函数`main()`中,创建了`Rectangle`对象`a`和`Circle`对象`b`,然后使用指向`Shape`的指针`p`来调用`show()`函数。`show()`函数通过指针`p`调用`GetArea()`和`GetPerim()`,由于这两个函数是虚函数,因此实际调用的是`Rectangle`或`Circle`类的版本,实现了多态性。 附加题要求在原有的程序基础上增加读写文件的功能,以便将几何形状的周长和面积存储到文件中。为了实现这一功能,可以添加两个成员函数,如`SaveToFile()`和`LoadFromFile()`,用于序列化和反序列化对象数据。这将涉及文件流(fstream)库的使用,以及对输入/输出操作的处理。 这个实验涵盖了C++多态的基础,包括虚函数和纯虚函数的应用,同时也引入了面向对象设计的一些基本概念,如继承和抽象类。通过这个实验,学生不仅可以掌握多态性的理论知识,还能通过实践加深理解。