欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:2737931       资源大小:133KB        全文页数:10页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    / 实验六实验目的1.掌握运算符重载的方法2.学习使用虚函数实现动态多态性实验要求1.定义Point类,有坐标_x,_y两个成员变量;对Point类重载“”(自增)、“”(自减)运算符,实现对坐标值的改变。2.定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。3. (选做)对实验4中的People类重载“”运算符和“”运算符,“”运算符判断两个people类对象的id属性是否相等;“”运算符实现People类对象的赋值操作。实验内容及实验步骤1. 编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator+();Point operator+(int);以实现对Point类重载“+”(自增)运算符,定义成员函数Point operator();Point operator(int);以实现对Point类重载“”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1Cpp#include <iostream>using namespace std;class Pointpublic:Point();Point(int x,int y);Point() /Point类析构函数Point& operator+(); /公有成员函数Point operator+(int);Point&operator-();Point operator-(int);void Show();private:int _x; /私有数据成员 int _y;Point:Point() /Point类构造函数_x=0;_y=0;Point:Point(int x,int y) /Point类构造函数_x=x;_y=y;Point & Point:operator+() /重载后置+运算符为Point类成员函数_x+;_y+;Point Point:operator+(int) /重载前置+运算符为Point类成员函数Point old=*this;+(this->_x);+(this->_y);return old;Point & Point:operator-() /重载后置-运算符为Point类成员函数_x-;_y-;Point Point:operator-(int) /重载前置-运算符为Point类成员函数Point old=*this;-(this->_x);-(this->_y);return old;void Point:Show() /输出Point的坐标值 cout<<_x<<","<<_y<<")"<<endl;int main()Point a(2,3); /定义一个Point类对象aPoint b=a+; /定义Point类对象b并用a+初始化bPoint c=+a; /定义Point类对象c并用+a初始化cPoint d=-a; /定义Point类对象d并用-a初始化dPoint e=a-; /定义Point类对象e并用a-初始化ecout<<"Point a("a.Show(); /输出a的坐标cout<<"Point b("b.Show(); /输出b的坐标cout<<"Point c("c.Show(); /输出c的坐标cout<<"Point d(" d.Show(); /输出d的坐标cout<<"Point e("e.Show(); /输出e的坐标return 0;运行结果:2编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2cpp#include <iostream>using namespace std;class vehicle /基类vehiclepublic:vehicle()vehicle()virtual void Run()cout<<"The vehicle is running!"<<endl; /定义虚函数Run()virtual void Stop()cout<<"The vehicle has stopped!"<<endl; /定义虚函数Stop();class bicycle: virtual public vehicle /定义派生类bicycle,声明基类为派生类的虚基类public:void Run()cout<<"The bicycle is running!"<<endl;void Stop()cout<<"The bicycle has stopped!"<<endl;bicycle()bicycle();class motorcar: virtual public vehicle /定义派生类motorcar,声明基类为派生类的虚基类public:void Run()cout<<"The motorcar is running!"<<endl;void Stop()cout<<"The motorcar has stopped!"<<endl;motorcar()motorcar();class motorcycle:public bicycle,public motorcar /以bicycle类和motorcar类作为基类派生新类motorcyclepublic:void Run()cout<<"The motorcycle is running!"<<endl;void Stop()cout<<"The motorcycle has stopped!"<<endl;int main()vehicle a; /定义vehicle类的一个对象avehicle *p; /定义一个vehicle类的指针bicycle b; /定义bicycle类的对象bmotorcar c; /定义motorcar类的对象cmotorcycle d; /定义motorcycle类的对象da.Run();a.Stop();b.Run();b.Stop();c.Run();c.Stop();d.Run();d.Stop();p=&a; /使指针p指向vehicle类对象ap->Run(); /通过指针调用vehicle类成员函数p->Stop();p=&b; /使指针p指向bicycle类对象bp->Run(); /通过指针调用bicycle类成员函数p->Stop();p=&c; /使指针p指向motorcar类对象cp->Run(); /通过指针调用motorcar类成员函数p->Stop();p=&d; /使指针指向motorbicycle类对象dp->Run(); /通过指针调用motorcycle类成员函数p->Stop(); return 0;运行结果:3. (选做)对实验4中的People类重载“”运算符和“”运算符,“”运算符判断两个people类对象的id属性是否相等;“”运算符实现People类对象的赋值操作。源程序:#include <iostream>#include <string>using namespace std;class Birthdaypublic: Birthday(int Year,int Month,int Day); /构造函数 Birthday() /构造函数 Birthday() /析构函数 Birthday(Birthday &p); /复制构造函数 int showBirthday() cout<<year<<"年"<<month<<"月"<<day<<"日" /内联成员函数 int enter();private:int year,month,day;Birthday:Birthday(Birthday &p)year=p.year;month=p.month;day=p.day;Birthday:Birthday(int Year,int Month,int Day) /Birthday类构造函数 year=Year; month=Month; day=Day; int Birthday:enter() cout<<"生日:" cin>>year>>month>>day;class people /定义people类public:people() /people类构造函数people() /people类析构函数people(people &p);people operator=(people &);people operator-(people &);int show();int enter();private:string number,id,sex; /字符串类型变量数据成员 Birthday p1; /Birthday类数据成员;int people:show() cout<<"n性别 "<<sex<<" 编号 " cout<<number; cout<<" 生日 " p1.showBirthday(); /调用Birthday类成员函数 cout<<" 身份证号 "<<id<<endl;int people:enter() p1.enter(); cout<<"性别:" cin>>sex; cout<<"编号:" cin>>number; cout<<"身份证号:" cin>>id;people:people(people &p):p1(p.p1) /people类复制构造函数number=p.number;sex=p.sex; id=p.id;people people:operator=(people &V) /重载=运算符成员函数 if(id=V.id) cout<<" have the same id! "<<endl; else cout<<" have different id!"<<endl;people people:operator-(people &U) /重载-运算符成员函数 number=U.number; /使用字符串赋值运算符 sex=U.sex; id=U.id; p1=U.p1; return *this; /返回this指针int main()int t;people p2; /定义对象数组p2for(t=0;t<2;t+) /输入对象数组成员信息cout<<"输入第"<<t+1<<"个人员的信息"<<endl;pt.enter();for(t=0;t<2;t+) /输出对象数组成员信息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. 如何将一个运算符重载为类的友元函数?一般形式:friend 返回类型 operator 运算符(形参表)函数体运算所需的操作数都需要通过函数的形参表传递,在形参表中形参从左至右的顺序就是运算符操作数的顺序,仅在需要访问类的私有成员或保护成员时才定义为友元函数。3. 如何实现运行时刻的多态?通过继承和虚函数实现。心得体会:掌握了运算符重载的方法;运算符重载可以重载为类成员函数和非成员函数;学会了使用继承和虚函数实现运行时刻的多态;在实现动态多态时,必须使用基类类型的指针或引用,是该指针指向基类的不同派生类的对象,并通过该指针指向虚函数才能实现动态的多态性。如果未声明为虚函数,则普通的派生类的新成员函数会覆盖基类同名成员函数,将不能实现运行时刻多态性。

    注意事项

    本文(C++上机实验报告实验六.doc)为本站会员(一***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开