收藏 分享(赏)

C++上机实验报告实验六.doc

上传人:精品资料 文档编号:9231618 上传时间:2019-07-30 格式:DOC 页数:10 大小:132.50KB
下载 相关 举报
C++上机实验报告实验六.doc_第1页
第1页 / 共10页
C++上机实验报告实验六.doc_第2页
第2页 / 共10页
C++上机实验报告实验六.doc_第3页
第3页 / 共10页
C++上机实验报告实验六.doc_第4页
第4页 / 共10页
C++上机实验报告实验六.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、 实验六实验目的1.掌握运算符重载的方法2.学习使用虚函数实现动态多态性实验要求1.定义 Point类,有坐标_x,_y 两个成员变量;对 Point类重载“”(自增)、“”(自减)运算符,实现对坐标值的改变。2.定义一个车(vehiele)基类,有 Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从 bicycle和 motorcar派生出摩托车(motorcycle)类,它们都有 Run、Stop 等成员函数。观察虚函数的作用。3. (选做)对实验 4中的 People类重载“”运算符和“”运算符,“”运算符判断两个 people类对象的 i

2、d属性是否相等;“”运算符实现 People类对象的赋值操作。实验内容及实验步骤1.编写程序定义 Point类,在类中定义整型的私有成员变量_x_y,定义成员函数 Pointclass Pointpublic:Point();Point(int x,int y);Point() /Point类析构函数Point /公有成员函数Point operator+(int);PointPoint operator-(int);void Show();private:int _x; /私有数据成员 int _y;Point:Point() /Point类构造函数_x=0;_y=0;Point:Point

3、(int x,int y) /Point类构造函数_x=x;_y=y;Point _y+;Point Point:operator+(int) /重载前置+运算符为 Point类成员函数Point old=*this;+(this-_x);+(this-_y);return old;Point _y-;Point Point:operator-(int) /重载前置-运算符为 Point类成员函数Point old=*this;-(this-_x);-(this-_y);return old;void Point:Show() /输出 Point的坐标值 coutusing namespace

4、 std;class vehicle /基类 vehiclepublic:vehicle()vehicle()virtual void Run()coutRun(); /通过指针调用 vehicle 类成员函数p-Stop();p= /使指针 p 指向 bicycle 类对象bp-Run(); /通过指针调用 bicycle 类成员函数p-Stop();p= /使指针 p 指向 motorcar 类对象 cp-Run(); /通过指针调用 motorcar 类成员函数p-Stop();p= /使指针指向 motorbicycle 类对象dp-Run(); /通过指针调用 motorcycle

5、类成员函数p-Stop(); return 0;运行结果:3. (选做)对实验 4中的 People类重载“”运算符和“”运算符,“”运算符判断两个 people类对象的 id属性是否相等;“”运算符实现 People类对象的赋值操作。源程序:#include #include using namespace std;class Birthdaypublic:Birthday(int Year,int Month,int Day); /构造函数Birthday() /构造函数Birthday() /析构函数Birthday(Birthday /复制构造函数int showBirthday()c

6、outyearmonthday;class people /定义 people类public:people() /people类构造函数people() /people类析构函数people(people people operator=(people people operator-(people int show();int enter();private:string number,id,sex; /字符串类型变量数据成员Birthday p1; /Birthday类数据成员;int people:show()coutsex;coutnumber;coutid;people:people

7、(people sex=p.sex;id=p.id;people people:operator=(people elsecout“ have different id!“endl;people people:operator-(people /使用字符串赋值运算符sex=U.sex;id=U.id;p1=U.p1;return *this; /返回 this指针int main()int t;people p2; /定义对象数组 p2for(t=0;t2;t+) /输入对象数组成员信息cout“输入第“t+1“个人员的信息“endl;pt.enter();for(t=0;t2;t+) /输出

8、对象数组成员信息cout“n第“t+1“个人员信息如下:“endl;pt.show();people p3; /定义 people类的对象p3p3-p1; /使用重载运算符将 p1赋给p3cout“n第 3个人员信息如下:“endl;p3.show();cout“p0,p1“; p0=p1; /使用重载运算符-判断 p0和 p1的 id是否相等return 0;运行结果:思考题1.如何将一个运算符重载为类的成员函数?一般语法形式:返回类型 operator 运算符(形参表)函数体函数的参数个数比原来的曹祖数个数要少一个(后置“+”,“-”除外)。2.如何将一个运算符重载为类的友元函数?一般形式

9、:friend 返回类型 operator 运算符(形参表)函数体运算所需的操作数都需要通过函数的形参表传递,在形参表中形参从左至右的顺序就是运算符操作数的顺序,仅在需要访问类的私有成员或保护成员时才定义为友元函数。3.如何实现运行时刻的多态?通过继承和虚函数实现。心得体会:掌握了运算符重载的方法;运算符重载可以重载为类成员函数和非成员函数;学会了使用继承和虚函数实现运行时刻的多态;在实现动态多态时,必须使用基类类型的指针或引用,是该指针指向基类的不同派生类的对象,并通过该指针指向虚函数才能实现动态的多态性。如果未声明为虚函数,则普通的派生类的新成员函数会覆盖基类同名成员函数,将不能实现运行时刻多态性。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报