C++语言程序设计(第四版)清华大学 郑莉 实验8实习报告

您所在的位置:网站首页 c实验指导书 C++语言程序设计(第四版)清华大学 郑莉 实验8实习报告

C++语言程序设计(第四版)清华大学 郑莉 实验8实习报告

2023-09-07 21:46| 来源: 网络整理| 查看: 265

实验8 多态性 (该实验环境为visual studio 2019,全部代码均已调试可运行) 一、 实验目的 (1) 掌握运算符重载的方法 (2) 学习使用虚函数实现动态多态性 二、 实验任务 (1) 声明Point类,有坐标_x,_y两个成员变量;对Point类重载“++(自增)”、“——(自减)”运算符,实现对坐标值的改变。 (2) 声明一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。 三、 实验步骤 (1) 编写程序声明Point类,在类中声明整型的私有成员变量_x,_y,声明成员函数Point&operator++();Point&operator++(int);以实现对Point类重载“++”运算符,声明成员函数Point&operator–();Point&operator–(int);以实现对Point类重载“–”运算符,实现对坐标值的改变。 代码:

#include using namespace std; class Point { public: Point(int x,int y):_x(x),_y(y) { } void showPoint() const; Point& operator++(); Point operator++(int); Point& operator--(); Point operator--(int); private: int _x, _y; }; void Point::showPoint() const { cout Point old = *this; ++(*this); return old; } Point& Point::operator--() { _x--; _y--; return *this; } Point Point::operator--(int) { Point old = *this; --(*this); return old; } int main() { Point a(2,2); a.showPoint(); (a++).showPoint(); (++a).showPoint(); (a--).showPoint(); (--a).showPoint(); return 0; }

运行结果: 在这里插入图片描述 (2) 编写程序声明一个车(vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run,Stop等成员函数。在main()函数中声明vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop声明为虚函数,再试试看。 代码:

#include using namespace std; class vehicle { public: void run() { cout public: void run() { cout public: virtual void run() { cout public: void run() { cout ptr->run(); ptr->stop(); } int main() { vehicle a; bicycle b; motorcar c; motorcycle d; fun(&a); fun(&b); fun(&c); fun(&d); return 0; }

运行结果: 在这里插入图片描述 把Run、Stop声明为虚函数,再试试看:

#include using namespace std; class vehicle { public: virtual void run() { cout public: void run() { cout public: virtual void run() { cout public: void run() { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3