欢迎来到天天文库
浏览记录
ID:55173953
大小:61.37 KB
页数:17页
时间:2020-04-30
《实验四-多态性.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验四:多态性一、实验目的1、掌握运算符重载的基本方法。2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。3、学习虚函数的定义与使用方法。4、了解静态多态性和动态多态性。5、学习使用虚函数和继承实现动态多态性。二、试验内容1、编写一个程序,要求:(1)生明一个类Complex(复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6
2、.5;(2)定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能返回两个复数对象相加操作;(3)定义成员函数print,调用该函数时,以格式“real+imagi”输出当前对象的实部和虚部,例如:对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:4.2+6.5i;(4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。#includeUsingnamespacestd;classComplex{public:Complex(){real=0;imag=
3、0;}Complex(doubler,doublei){real=r;imag=i;}friendComplexoperator+(Complexa,Complexb){Complexc(a.real+b.real,a.imag+b.imag);returnc;}voidprint(){cout<real<<"+i"<imag<4、c2(4.2,6.5);c2.print();Complexc3=c1+c2;c3.print();getchar();}2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。提示:时间类Time的参考框架如下:classTime{public:Time(inth=0,intm=0,ints=0);//构造函数Timeoperator+(Time&);//运算符重载函5、数,实现两个时间的相加voiddisptime();//显示时间函数private:inthours,minutes,seconds;};代码:#includeclassTime{public:Time(inth=0,intm=0,ints=0)//构造函数{hours=h;minutes=m;seconds=s;};Timeoperator+(Time&a)//运算符重载函数,实现两个时间的相加{Timet(this->hours+a.hours,this->minutes+a.minut6、es,this->seconds+a.seconds);if(t.seconds>59){t.seconds-=60;t.minutes+=1;}if(t.minutes>59){t.minutes-=60;t.hours+=1;}returnt;};voiddisptime()//显示时间函数{cout<hours<<"小时"<minutes<<"分钟"<seconds<<"秒"<7、dmain(){Timet1(1,2,3);t1.disptime();Timet2(4,5,6);t2.disptime();(t1+t2).disptime();}3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。#includeusingnamespacestd;classMatrix{private:introw,col;int*m;public:int&operator()(inti,intj){returnm[(i8、-1)*this->col+j-1];};Matrixoperator-(Matrix&a){if(a.row!=this->row9、10、a.col!=this->col){cout<<"减?不?了¢?"<
4、c2(4.2,6.5);c2.print();Complexc3=c1+c2;c3.print();getchar();}2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。提示:时间类Time的参考框架如下:classTime{public:Time(inth=0,intm=0,ints=0);//构造函数Timeoperator+(Time&);//运算符重载函
5、数,实现两个时间的相加voiddisptime();//显示时间函数private:inthours,minutes,seconds;};代码:#includeclassTime{public:Time(inth=0,intm=0,ints=0)//构造函数{hours=h;minutes=m;seconds=s;};Timeoperator+(Time&a)//运算符重载函数,实现两个时间的相加{Timet(this->hours+a.hours,this->minutes+a.minut
6、es,this->seconds+a.seconds);if(t.seconds>59){t.seconds-=60;t.minutes+=1;}if(t.minutes>59){t.minutes-=60;t.hours+=1;}returnt;};voiddisptime()//显示时间函数{cout<hours<<"小时"<minutes<<"分钟"<seconds<<"秒"<7、dmain(){Timet1(1,2,3);t1.disptime();Timet2(4,5,6);t2.disptime();(t1+t2).disptime();}3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。#includeusingnamespacestd;classMatrix{private:introw,col;int*m;public:int&operator()(inti,intj){returnm[(i8、-1)*this->col+j-1];};Matrixoperator-(Matrix&a){if(a.row!=this->row9、10、a.col!=this->col){cout<<"减?不?了¢?"<
7、dmain(){Timet1(1,2,3);t1.disptime();Timet2(4,5,6);t2.disptime();(t1+t2).disptime();}3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。#includeusingnamespacestd;classMatrix{private:introw,col;int*m;public:int&operator()(inti,intj){returnm[(i
8、-1)*this->col+j-1];};Matrixoperator-(Matrix&a){if(a.row!=this->row
9、
10、a.col!=this->col){cout<<"减?不?了¢?"<
此文档下载收益归作者所有