C上机实验报告实验六
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C上机实验报告实验六集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#
实验六
实验目的
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_1.Cpp
#include
using namespace std;
class Point
{
public:
Point();
Point(int x,int y);
~Point(){} (选做)对实验4中的People类重载“==”运算符和“-”运算符,“==”运算符判断两个people类对象的id 属性是否相等;“-”运算符实现People类对象的赋值操作。
源程序:
#include
#include
using namespace std;
class Birthday{
public:
Birthday(int Year,int Month,int Day); nter();
}
for(t=0;t<2;t++) how();
}
people p3; //定义people类的对象p3
p3-p[1]; //使用重载运算符将p[1]赋给p3
cout<<"\n第3个人员信息如下:"< (); cout<<"p[0],p[1]"; p[0]==p[1]; //使用重载运算符-判断p[0]和p[1]的id是否相等 return 0; } 运行结果: 思考题 1.如何将一个运算符重载为类的成员函数 一般语法形式: 返回类型 operator 运算符(形参表) { 函数体 } 函数的参数个数比原来的曹祖数个数要少一个(后置“++”,“--”除外)。 2.如何将一个运算符重载为类的友元函数 一般形式: friend 返回类型 operator 运算符(形参表) { 函数体 } 运算所需的操作数都需要通过函数的形参表传递,在形参表中形参从左至右的顺序就是运算符操作数的顺序,仅在需要访问类的私有成员或保护成员时才定义为友元函数。 3.如何实现运行时刻的多态 通过继承和虚函数实现。 心得体会: 掌握了运算符重载的方法;运算符重载可以重载为类成员函数和非成员函数;学会了使用继承和虚函数实现运行时刻的多态;在实现动态多态时,必须使用基类类型的指针或引用,是该指针指向基类的不同派生类的对象,并通过该指针指向虚函数才能实现动态的多态性。如果未声明为虚函数,则普通的派生类的新成员函数会覆盖基类同名成员函数,将不能实现运行时刻多态性。