欢迎来到天天文库
浏览记录
ID:1547071
大小:45.50 KB
页数:5页
时间:2017-11-12
《实验八 运算符重载》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验八运算符重载一、实验类型设计型二、实验目的1、实验目的(1)理解运算符重载的意义。(2)掌握利用友元函数和成员函数进行运算符重载的方法。三、上机准备1、实验室安装VC++6.0软件。2、运算符重载的基本概念、运算符重载的定义和使用方法四、实验内容与步骤1、下列程序利用友元函数重载运算符“+”,实现sample类对象的直接相加运算。修正程序中的错误,使程序能正确运行。程序代码:#includeclasssample{private:intx;public:sample(){}sample(inta){x=a;}voiddisp(){
2、cout<<"x="<3、,而非类中的成员函数,其定义格式与普通函数相同,如sampleoperator+(sample&s1,sample&s2)(3)思考修改上述程序,如何利用成员函数实现运算符的重载?2、定义一个Matric类,并对()运算符进行重载,修正程序中的错误,使程序有如下输出:5,6,7,8,9,程序代码如下:#includeclassMatrix{publicMatrix(intr,intc){row=r;col=c;elem=newdouble[row*col];}doubleoperator()(intx,inty){returnelem4、[col*(x-1)+y-1];}Matrix(){deleteelem;}private:double*elem;introw,col;};voidmain(){Matrixm(5,8);for(inti=0;i<5;i++)m(i,1)=i+5;for(i=0;i<5;i++)cout<operator<运算符符号5、>(参数列表),如,double&operator()(intx,inty)。(3)构造函数与虚构函数名称类似,构造函数名与类名相同,但析构函数名还包括“~”符号。(4)使用new分配堆空间,在使用完成后,需要使用delete释放堆空间,如果是数组需要配合使用“[]”,如,delete[]elem;3、设计一个用于人事管理的人员类。数据成员包括编号、姓名、性别、出生日期、身份证号等。其中,“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。并对人员类重载“==”运算符和“=”运算符,“==”运算符判断两个人员类对象的身份证号属性6、是否相等;“=”运算符实现人员类对象的赋值操作。提示与分析:(1)建立一个人员(Person)类。(2)包括数据成员:编号(No)、姓名(Name)、性别(Sex)、出生日期(Birthday)、身份证号(ID),其中,Name、Sex、ID使用字符数组存储,No为整型,而Birthday为日期(TDate)类子对象。(3)构建一个日期(Date)类,包括数据成员:年(Year)、月(Month)和日(Day);成员函数包括构造函数和显示日期(print)。(4)Person类的成员函数为信息录入(inputInfo)和显示(printInfo),函数声明如7、下:voidinputInfo(char*pName,char*pSex,char*pID);voidprintInfo();(5)利用成员函数重载“==”运算符,成员函数定义如下:intoperator==(Person&person){returnstrcmp(this->ID,person.ID);}(6)利用成员函数重载“=”运算符,成员函数定义如下:Person&operator=(Person&person){strcpy(Name,person.Name);strcpy(Sex,person.Sex);strcpy(ID,person.ID);8、return*this;}(7)在main函数中可以
3、,而非类中的成员函数,其定义格式与普通函数相同,如sampleoperator+(sample&s1,sample&s2)(3)思考修改上述程序,如何利用成员函数实现运算符的重载?2、定义一个Matric类,并对()运算符进行重载,修正程序中的错误,使程序有如下输出:5,6,7,8,9,程序代码如下:#includeclassMatrix{publicMatrix(intr,intc){row=r;col=c;elem=newdouble[row*col];}doubleoperator()(intx,inty){returnelem
4、[col*(x-1)+y-1];}Matrix(){deleteelem;}private:double*elem;introw,col;};voidmain(){Matrixm(5,8);for(inti=0;i<5;i++)m(i,1)=i+5;for(i=0;i<5;i++)cout<operator<运算符符号
5、>(参数列表),如,double&operator()(intx,inty)。(3)构造函数与虚构函数名称类似,构造函数名与类名相同,但析构函数名还包括“~”符号。(4)使用new分配堆空间,在使用完成后,需要使用delete释放堆空间,如果是数组需要配合使用“[]”,如,delete[]elem;3、设计一个用于人事管理的人员类。数据成员包括编号、姓名、性别、出生日期、身份证号等。其中,“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。并对人员类重载“==”运算符和“=”运算符,“==”运算符判断两个人员类对象的身份证号属性
6、是否相等;“=”运算符实现人员类对象的赋值操作。提示与分析:(1)建立一个人员(Person)类。(2)包括数据成员:编号(No)、姓名(Name)、性别(Sex)、出生日期(Birthday)、身份证号(ID),其中,Name、Sex、ID使用字符数组存储,No为整型,而Birthday为日期(TDate)类子对象。(3)构建一个日期(Date)类,包括数据成员:年(Year)、月(Month)和日(Day);成员函数包括构造函数和显示日期(print)。(4)Person类的成员函数为信息录入(inputInfo)和显示(printInfo),函数声明如
7、下:voidinputInfo(char*pName,char*pSex,char*pID);voidprintInfo();(5)利用成员函数重载“==”运算符,成员函数定义如下:intoperator==(Person&person){returnstrcmp(this->ID,person.ID);}(6)利用成员函数重载“=”运算符,成员函数定义如下:Person&operator=(Person&person){strcpy(Name,person.Name);strcpy(Sex,person.Sex);strcpy(ID,person.ID);
8、return*this;}(7)在main函数中可以
此文档下载收益归作者所有