C++实验报告6

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

贵州大学实验报告学院:计算机科学与信息学院专业:网络工程班级:网络092班姓名王荣森学号0908060386实验组实验时间2011.5.30指导教师张文勇成绩实验项目名称试验六多态性实验目的1.练习重载函数的使用。2.掌握运算符重载的方法。3.学习使用虚函数实现动态多态性。实验要求注意观察结果,记录并分析每一个问题的结果或出错信息提示。实验原理运用VC++编译器进行程序的编写与运行,根据题目的要求完成相应的程序设计,运行程序,分析结果。注意错误信息提示和学会运用Debug功能调试程序。实验仪器Pc机VC++6.0环境实验步骤实验步骤1.分别编写四个同名函数Max1,实现函数重载,在main()函数中测试函数功能。程序名:lab6_1.cpp。2.编写程序定义Point类,在类中定义整型的私有成员变量x、y,定义成员函数Pointoperator++();以实现对Point类重载“++”(自增)运算符,定义成员函数Pointoperator--();以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:lab6_2.cpp。3.编写定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数,先把Run()、Stop()定义为虚函数,在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,用vehicle类型的指针来调用这几个对象的成员函数Run()、Stop(),观察并分析其执行结果。然后不要定义为虚函数。看看结果是否还一样,分析说明原因。程序名:lab6_3.cpp。实验内容1.编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。2.定义Point类,有坐标x,y两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现对坐标值的改变。3.定义一个车(vehicle)基类,具有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。实验数据1.编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。程序:#includeiostream.hintmax1(intx,inty){return(xy?x:y);}intmax1(intx,inty,intz){inttemp1=max1(x,y);return(temp1z?temp1:z);}doublemax1(doublex,doubley){return(xy?x:y);}doublemax1(doublex,doubley,doublez){doubletemp1=max1(x,y);return(temp1z?temp1:z);}voidmain(){intx1,x2;doubled1,d2;x1=max1(5,6);x2=max1(2,3,4);d1=max1(2.1,5.6);d2=max1(12.3,3.4,7.8);coutx1=x1endl;coutx2=x2endl;coutd1=d1endl;coutd2=d2endl;}运行结果:2.定义Point类,有坐标x,y两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现对坐标值的改变。程序:#includeiostream.hclassPoint{private:intx,y;public:Pointoperator++();Pointoperator--();Point(){x=0;y=0;}Point(intvx,intvy){x=vx;y=vy;}intGetx(){returnx;}intGety(){returny;}};PointPoint::operator++(){if(x1024)x++;if(y768)y++;return*this;}PointPoint::operator--(){if(x0)x--;if(y0)y--;return*this;}voidmain(){PointA,B(11,11);coutA的值为:A.Getx(),A.Gety()endl;A--;coutA的值为:A.Getx(),A.Gety()endl;A++;coutA的值为:A.Getx(),A.Gety()endl;++A;coutA的值为:A.Getx(),A.Gety()endl;A--;coutA的值为:A.Getx(),A.Gety()endl;--A;coutA的值为:A.Getx(),A.Gety()endl;coutB的值为:B.Getx(),B.Gety()endl;B++;coutB的值为:B.Getx(),B.Gety()endl;++B;coutB的值为:B.Getx(),B.Gety()endl;B--;coutB的值为:B.Getx(),B.Gety()endl;--B;coutB的值为:B.Getx(),B.Gety()endl;}运行结果:3.定义一个车(vehicle)基类,具有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。程序:#includeiostream.hclassvehicle{private:intMaxSpeed;intWeight;public:vehicle(){MaxSpeed=0;Weight=0;};~vehicle(){};virtualvoidRun(){coutAvehicleisrunning!endl;}virtualvoidStop(){coutAvehiclehasstopped!endl;}};classbicycle:virtualpublicvehicle{private:intHeight;public:bicycle(){};~bicycle(){};voidRun(){coutAbicycleisrunning!endl;}voidStop(){coutAbicyclehasstopped!endl;}};classmotorcar:virtualpublicvehicle{private:intSeatNum;public:motorcar(){};~motorcar(){};voidRun(){coutAmotorcarisrunning!endl;}voidStop(){coutAmotorcarhasstopped!endl;}};classmotorcycle:publicbicycle,publicmotorcar{public:motorcycle(){};~motorcycle(){};voidRun(){coutAmotorcycleisrunning!endl;}voidStop(){coutAmotorcyclehasstopped!endl;}};voidmain(){vehicle*ptr,a;bicycleb;motorcarc;motorcycled;a.Run();a.Stop();b.Run();b.Stop();c.Run();c.Stop();d.Run();d.Stop();ptr=&a;ptr-Run();ptr=&b;ptr-Run();ptr=&c;ptr-Run();ptr=&d;ptr-Run();}运行结果:实验总结多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定的成员函数的再抽象。多态分为重载多态、强制多态、包含多态和参数多态四类。重载多态和强制多态属于专用多态,包含多态和参数多态属于通用多态。多态从实用角度还可以分为:编译时的多态和运行时的多态,编译时的多态是指在编译的过程中确定了同名操作的具体操作对象;运行时的多态是指在程序运行过程中才动态地确定操作所针对的对象。指导教师意见签名:年月日

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功