C++实验报告之多态性.docx
- 文档编号:24558121
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:13
- 大小:120.80KB
C++实验报告之多态性.docx
《C++实验报告之多态性.docx》由会员分享,可在线阅读,更多相关《C++实验报告之多态性.docx(13页珍藏版)》请在冰豆网上搜索。
C++实验报告之多态性
题目1:
定义Point类,有坐标一x,一y两个成员变量;对Point类重载“++”(自增)、“一一”(自减)运算符,实现对坐标值的改变。
源程序1
/**************************lab8—1.cpp*************************/
/***************************单森汉****************************/
/***************************2012-5-26***************************/
#include
usingnamespacestd;
classPoint
{
private:
intxx;
intyy;
public:
Point(intx,inty)//构造函数Point
{
xx=x;
yy=y;
}
Pointoperator++();
Pointoperator++(int);
Pointoperator--();
Pointoperator--(int);
voiddisp()//输出坐标
{
cout<<"("< } }; PointPoint: : operator++()//自增成员函数 { Pointt(xx,yy); xx++; yy++; returnt; } PointPoint: : operator++(int)//自增成员函数 { Pointt(xx,yy); xx++; yy++; ++t; returnt; } PointPoint: : operator--()//自减成员函数 { Pointt(xx,yy); xx--; yy--; returnt; } PointPoint: : operator--(int)//自减成员函数 { Pointt(xx,yy); xx--; yy--; --t; returnt; } voidmain() { Pointpoint1(0,0); cout<<"O点的起始坐标为: ";point1.disp(); ++point1; cout<<"横纵坐标都自增后O点坐标: ";point1.disp(); point1++;//重载自增运算符 cout<<"重载自增运算符后O点坐标: ";point1.disp(); --point1; cout<<"横纵坐标都自减后O点坐标: ";point1.disp(); point1--;//重载自减运算符 cout<<"重载自减运算符后O点坐标: ";point1.disp(); } 运行结果截图 题目2: 定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。 观察虚函数的作用。 源程序2 ① /******************************在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数******************************/ /***************************单森汉***************************/ /***************************2012-5-21***************************/ #include usingnamespacestd; classVehicle{ public: voidRun(){ cout<<"我是基类Vehicle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是基类Vehicle中的Stop函数I'vestopped! "< } }; classBicycle: virtualpublicVehicle{ public: voidRun(){ cout<<"我是派生类Bicycle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Bicycle中的Stop函数I'vestopped! "< } }; classMotorcar: virtualpublicVehicle{ public: voidRun(){ cout<<"我是派生类Motorcar中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Motorcar中的Stop函数I'vestopped! "< } }; classMotorcycle: publicBicycle,publicMotorcar{ public: voidRun(){ cout<<"我是派生类Motorcycle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Motorcycle中的Stop函数I'vestopped! "< } }; voidmain() { Vehiclea; a.Run(); a.Stop(); Bicycleb; b.Run(); b.Stop(); Motorcarc; c.Run(); c.Stop(); Motorcycled; d.Run(); d.Stop(); } ② /*******分别用vehicle类型的指针来调用这几个对象的成员函数*******/ /***************************单森汉***************************/ /***************************2012-5-21***************************/ #include usingnamespacestd; classVehicle{ public: voidRun(){ cout<<"我是基类Vehicle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是基类Vehicle中的Stop函数I'vestopped! "< } }; classBicycle: virtualpublicVehicle{ public: voidRun(){ cout<<"我是派生类Bicycle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Bicycle中的Stop函数I'vestopped! "< } }; classMotorcar: virtualpublicVehicle{ public: voidRun(){ cout<<"我是派生类Motorcar中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Motorcar中的Stop函数I'vestopped! "< } }; classMotorcycle: publicBicycle,publicMotorcar{ public: voidRun(){ cout<<"我是派生类Motorcycle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Motorcycle中的Stop函数I'vestopped! "< } }; voidmain() { Vehicle*p; Vehiclea; p=&a; p->Run(); p->Stop(); Bicycleb; p=&b; p->Run(); p->Stop(); Motorcarc; p=&c; p->Run(); p->Stop(); Motorcycled; p=&d; p->Run(); p->Stop(); } ③ /*******************把Run、Stop定义为虚函数*******************/ /***************************单森汉***************************/ /***************************2012-5-21***************************/ #include usingnamespacestd; classVehicle{ public: virtualvoidRun(){ cout<<"我是基类Vehicle中的Run函数I'mrunning! "< } virtualvoidStop(){ cout<<"我是基类Vehicle中的Stop函数I'vestopped! "< } }; classBicycle: virtualpublicVehicle{ public: voidRun(){ cout<<"我是派生类Bicycle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Bicycle中的Stop函数I'vestopped! "< } }; classMotorcar: virtualpublicVehicle{ public: voidRun(){ cout<<"我是派生类Motorcar中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Motorcar中的Stop函数I'vestopped! "< } }; classMotorcycle: publicBicycle,publicMotorcar{ public: voidRun(){ cout<<"我是派生类Motorcycle中的Run函数I'mrunning! "< } voidStop(){ cout<<"我是派生类Motorcycle中的Stop函数I'vestopped! "< } }; voidmain() { Vehicle*p; Vehiclea; p=&a; p->Run(); p->Stop(); Bicycleb; p=&b; p->Run(); p->Stop(); Motorcarc; p=&c; p->Run(); p->Stop(); Motorcycled; p=&d; p->Run(); p->Stop(); } 运行结果截图 2 ② 3 仅供学习交流参考之用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 报告 多态性