1 / 11
文档名称:

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

格式:docx   大小:759KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:260933426 2017/7/29 文件大小:759 KB

下载得到文件列表

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

文档介绍

文档介绍:实验六多态性
实验目的


实验要求
,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。
(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。
3. (选做)对实验4中的People类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现People类对象的赋值操作。
实验内容及实验步骤
,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point& operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:。
(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:。
思考题
如何将一个运算符重载为类的成员函数?
函数类型 operator 运算符(形参表)
{
函数体;
}
如何将一个运算符重载为类的友元函数?
friend 函数类型 operator 运算符(形参表)
{
函数体;
}
?
在基类的成员函数前加上virtual,就可以在它的派生类中声明相同名字和类型的成员函数,在运行过程中,系统会自动判断并调用相应类中的成员函数,从而在调用过程中实现多态。
源程序

#include<iostream>
using namespace std;
class Point
{
private:
int _x;
int _y;
public:
//
Point(){}
Point(int,int);
~Point(){}
//++.--重载
Point& operator ++();
Point operator ++(int);
Point& operator --();
Point operator --(int);
//输出点坐标
void showPoint();
};
Point::Point(int x,int y)
{
_x=x;
_y=y;
}
Point& Point::operator ++()
{
_x++;
_y++;
return *this;
}
Point Point::operator ++(int)
{
Point p=*this;
++(*this);
return p;
}
Point& Point::operator --()
{
_x--;
_y--;
return *this;
}
Point Point::operator --(int)
{
Point p=*this;
--(*this);
return p;
}
void Point::showPoint()
{
cout<<"The point is ("<<_x<<","<<_y<<")"<<endl;
}
int main()
{
Point apoint(3,5);
();
(apoint++).showPoint();//测试后置++
();
(++apoint).showPoint();//测试前置++
();
(apoint--).showPoint();//