欢迎来到天天文库
浏览记录
ID:15307150
大小:115.50 KB
页数:11页
时间:2018-08-02
《24李后浪c++实验三多态性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验3多态性实验课程名:高级语言程序设计Ⅱ专业班级:12网工2班学号:201240420224姓名:李后浪实验时间:5.12-5.13实验地点:K4-201指导教师:祁文青一、实验目的和要求(1)了解多态性的概念。(2)掌握运算符重载的基本方法。(3)掌握虚函数的定义和使用方法。(4)掌握纯虚函数和抽象类的概念和用法。二、实验内容与步骤1.分析并调试下列程序,写出程序的输出结果,并解释输出结果。//test5_1.cpp#includeusingnamespacestd;classB{public:virtualvoidf1(doublex){cou
2、t<<”B::f1(double)”<3、uble)”<<3*x<f1(1.23);pb->f1(1.23);pb->f2(1.23);pb->f3(1.23);pb->f3(3.14);return0;}正确程序://test5_1.cpp#includeusingnamespacestd;classB{public:virtualvoidf1(doublex){cout<<"B::f1(double)"<4、x<f1(1.23);pb->f15、(1.23);pb->f2(1.23);pb->f3(1.23);pb->f3(3.14);return0;}程序的输出结果D::f1(double)1.23;D::f1(double)1.23;D::f2(double)1.23;D::f3(double)1.23;D::f3(double)3.14;解释输出结果:Pb为指向基类的指针变量,在派生类D的基类部分中,派生类的虚函数f1取代了基类原来的虚函数,因此在使基类指针pb指向基类的虚函数f1时,即指向了派生类的虚函数f1,而由于f2,f3均不为虚函数,所以基类指针还是指向基类的f2,f3.2.编写一个程序,其中设计6、一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。【提示】时间类Time{public:Time(inth=0,intm=0,ints=0);Timeoperator+(Time&);voiddisptime(string);private:inthourse;intminutes;intseconds;};正确程序:#include#includeusingnamespacestd;classTime{pub7、lic:Time(inth=0,intm=0,ints=0);Timeoperator+(Time&);voiddisptime(string);private:inthourse;intminutes;intseconds;};Time::Time(inth,intm,ints){hourse=h;minutes=m;seconds=s;}TimeTime::operator+(Time&t){inth,m,s;s=(t.seconds+seconds)%60;m=(minutes+t.minutes+(t.seconds+second
3、uble)”<<3*x<f1(1.23);pb->f1(1.23);pb->f2(1.23);pb->f3(1.23);pb->f3(3.14);return0;}正确程序://test5_1.cpp#includeusingnamespacestd;classB{public:virtualvoidf1(doublex){cout<<"B::f1(double)"<4、x<f1(1.23);pb->f15、(1.23);pb->f2(1.23);pb->f3(1.23);pb->f3(3.14);return0;}程序的输出结果D::f1(double)1.23;D::f1(double)1.23;D::f2(double)1.23;D::f3(double)1.23;D::f3(double)3.14;解释输出结果:Pb为指向基类的指针变量,在派生类D的基类部分中,派生类的虚函数f1取代了基类原来的虚函数,因此在使基类指针pb指向基类的虚函数f1时,即指向了派生类的虚函数f1,而由于f2,f3均不为虚函数,所以基类指针还是指向基类的f2,f3.2.编写一个程序,其中设计6、一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。【提示】时间类Time{public:Time(inth=0,intm=0,ints=0);Timeoperator+(Time&);voiddisptime(string);private:inthourse;intminutes;intseconds;};正确程序:#include#includeusingnamespacestd;classTime{pub7、lic:Time(inth=0,intm=0,ints=0);Timeoperator+(Time&);voiddisptime(string);private:inthourse;intminutes;intseconds;};Time::Time(inth,intm,ints){hourse=h;minutes=m;seconds=s;}TimeTime::operator+(Time&t){inth,m,s;s=(t.seconds+seconds)%60;m=(minutes+t.minutes+(t.seconds+second
4、x<f1(1.23);pb->f1
5、(1.23);pb->f2(1.23);pb->f3(1.23);pb->f3(3.14);return0;}程序的输出结果D::f1(double)1.23;D::f1(double)1.23;D::f2(double)1.23;D::f3(double)1.23;D::f3(double)3.14;解释输出结果:Pb为指向基类的指针变量,在派生类D的基类部分中,派生类的虚函数f1取代了基类原来的虚函数,因此在使基类指针pb指向基类的虚函数f1时,即指向了派生类的虚函数f1,而由于f2,f3均不为虚函数,所以基类指针还是指向基类的f2,f3.2.编写一个程序,其中设计
6、一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。【提示】时间类Time{public:Time(inth=0,intm=0,ints=0);Timeoperator+(Time&);voiddisptime(string);private:inthourse;intminutes;intseconds;};正确程序:#include#includeusingnamespacestd;classTime{pub
7、lic:Time(inth=0,intm=0,ints=0);Timeoperator+(Time&);voiddisptime(string);private:inthourse;intminutes;intseconds;};Time::Time(inth,intm,ints){hourse=h;minutes=m;seconds=s;}TimeTime::operator+(Time&t){inth,m,s;s=(t.seconds+seconds)%60;m=(minutes+t.minutes+(t.seconds+second
此文档下载收益归作者所有