- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
实验六多态性
1.实验目的
掌握运算符重载的方法
学习使用虚函数实现动态多态性
2.实验要求
1.定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。2.定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。
3.(选做)对实验4中的People类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现People类对象的赋值操作。
3.实验内容及实验步骤
编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Pointoperator++();Pointoperator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point
&operator--();Pointoperator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1.cpp。
编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。
4.思考题
如何将一个运算符重载为类的成员函数?函数类型operator运算符(形参表)
{
函数体;
}
如何将一个运算符重载为类的友元函数?friend函数类型operator运算符(形参表)
{
函数体;
}
如何实现运行时刻的多态?
在基类的成员函数前加上virtual,就可以在它的派生类中声明相同名字和类型的成员函数,在运行过程中,系统会自动判断并
调用相应类中的成员函数,从而在调用过程中实现多态。
5.源程序
lab8_1.cpp#includeiostreamusingnamespacestd;classPoint
{
private:
int_x;int_y;public:
//构造.析构函数Point(){}Point(int,int);
~Point(){}
//++.--重载Pointoperator++();Pointoperator++(int);Pointoperator--();Pointoperator--(int);
//输出点坐标voidshowPoint();
};
Point::Point(intx,inty)
{
_x=x;
_y=y;
}
PointPoint::operator++()
{
_x++;
_y++;return*this;
}
PointPoint::operator++(int)
{
Pointp=*this;
++(*this);returnp;
}
PointPoint::operator--()
{
_x--;
_y--;
return*this;
}
PointPoint::operator--(int)
{
Pointp=*this;
--(*this);returnp;
}
voidPoint::showPoint()
{
coutThepointis(_x,_y)endl;
}
intmain()
{
Pointapoint(3,5);apoint.showPoint();(apoint++).showPoint();//测试后置++apoint.showPoint();(++apoint).showPoint();//测试前置++apoint.showPoint();
(apoint--).showPoint();//测试后置--apoint.showPoint();
(--apoint).showPoint();//测试前置--apoint.showPoint();
return0;
}
lab8_2.cpp#includeiostreamusingnamespacestd;classVehi
您可能关注的文档
- aieiui的练习题分析和总结.docx
- Akamai各产品线介绍.docx
- AKTA色谱纯化系统验证方案.docx
- ALCATEL 系统及话机功能介绍.docx
- ALC轻质隔墙板施工组织设计.docx
- Altair HyperMesh软件中所有操作对象类型说明.docx
- Altium designer 面板调度中心.docx
- amisare专项练习题分析和总结.docx
- AndroidStudio移动应用开发教学大纲.docx
- android开发计算器设计开发报告材料.docx
- DB23_T 3866-2024冰上龙舟赛事组织服务规范.docx
- DB32 2163-2012 棉纱单位可比综合电耗限额及计算方法.docx
- DB32∕T 2429-2013 棉花田间生长发育观察记载规范.docx
- DB23_T 3820-2024 工业互联网综合平台数据质量管理规范.docx
- DB23_T 3474-2023非煤智慧矿山信息系统技术规范.docx
- DB3201_T 1106-2022 工程地质层划分技术规范.docx
- DB33T 2515-2022公共机构“零碳”管理与评价规范.docx
- DB3301_T 0415-2023 装修垃圾收运处置管理规范.docx
- DB3311/T 106―2019“丽水山居”民宿服务要求与评价规范.docx
- DB3201T 1127-2022 慈善捐赠受赠管理规范.docx
最近下载
- 金蝶云苍穹考试认证理论考题汇总(精华版).pdf VIP
- 钢梯设计图集15J401.pdf VIP
- 在项目规划评审会上的致辞发言3.docx
- 建筑工程图集 G410-1~2:1.5m×6.0m预应力混凝土屋面板(2004年合订本).pdf VIP
- 《康复评定技术》课件——第十七章 常见神经疾病的评定技术.ppt VIP
- 山东省水产品出口贸易现状、问题及对策分析.docx VIP
- 2025年上海黄浦区中考模拟语文试卷(含答案) .pdf VIP
- 《综合与实践:白昼时长规律的探究》教案.docx VIP
- 2025年妇产科护理技术规范.pdf VIP
- 施工现场高温季节安全防护与防暑管理培训.pptx VIP
文档评论(0)