欢迎来到天天文库
浏览记录
ID:51299047
大小:759.91 KB
页数:11页
时间:2020-03-10
《C++上机实验报告实验六.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验六多态性1.实验目的1.掌握运算符重载的方法2.学习使用虚函数实现动态多态性2.实验要求1.定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。2.定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。3.(选做)对实验4中的People类重载“==”运算符和“=”运算符,“==”运算符判断两个peopl
2、e类对象的id属性是否相等;“=”运算符实现People类对象的赋值操作。3.实验内容及实验步骤1.编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point&operator++();Pointoperator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point&operator--();Pointoperator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1.cpp。2.编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(b
3、icycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。4.思考题1.如何将一个运算符重载为类的成员函数?函数类型operator运算符(形参表){函数体;}2.如何将一个运算符重载为类的友
4、元函数?friend函数类型operator运算符(形参表){函数体;}3.如何实现运行时刻的多态?在基类的成员函数前加上virtual,就可以在它的派生类中声明相同名字和类型的成员函数,在运行过程中,系统会自动判断并调用相应类中的成员函数,从而在调用过程中实现多态。5.源程序1.lab8_1.cpp#includeusingnamespacestd;classPoint{private:int_x;int_y;public://构造.析构函数Point(){}Point(int,int);~Point(){}//++.--重载Point&operator++()
5、;Pointoperator++(int);Point&operator--();Pointoperator--(int);//输出点坐标voidshowPoint();};Point::Point(intx,inty){_x=x;_y=y;}Point&Point::operator++(){_x++;_y++;return*this;}PointPoint::operator++(int){Pointp=*this;++(*this);returnp;}Point&Point::operator--(){_x--;_y--;return*this;}PointPoint::ope
6、rator--(int){Pointp=*this;--(*this);returnp;}voidPoint::showPoint(){cout<<"Thepointis("<<_x<<","<<_y<<")"<7、t.showPoint();(--apoint).showPoint();//测试前置--apoint.showPoint();return0;}1.lab8_2.cpp#includeusingnamespacestd;classVehicle{public://基类的成员函数为虚函数virtualvoidrun(){cout<<"Vehicleisrunning!"<
7、t.showPoint();(--apoint).showPoint();//测试前置--apoint.showPoint();return0;}1.lab8_2.cpp#includeusingnamespacestd;classVehicle{public://基类的成员函数为虚函数virtualvoidrun(){cout<<"Vehicleisrunning!"<
此文档下载收益归作者所有