C 上机实验报告 实验六.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

实验六多态性

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

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档