C上机实验报告实验六

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.如何实现运行时刻的多态

通过继承和虚函数实现。

心得体会:

掌握了运算符重载的方法;运算符重载可以重载为类成员函数和非成员函数;学会了使用继承和虚函数实现运行时刻的多态;在实现动态多态时,必须使用基类类型的指针或引用,是该指针指向基类的不同派生类的对象,并通过该指针指向虚函数才能实现动态的多态性。如果未声明为虚函数,则普通的派生类的新成员函数会覆盖基类同名成员函数,将不能实现运行时刻多态性。

相关文档
最新文档