



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验八 运算符重载一、实验类型 设计型二、实验目的1、实验目的(1) 理解运算符重载的意义。(2) 掌握利用友元函数和成员函数进行运算符重载的方法。三、上机准备1、实验室安装VC+6.0软件。2、运算符重载的基本概念、运算符重载的定义和使用方法四、实验内容与步骤1、下列程序利用友元函数重载运算符“+”,实现sample类对象的直接相加运算。修正程序中的错误,使程序能正确运行。程序代码:#includeclass sampleprivate:int x;public:sample()sample(int a)x=a;void disp()coutx=xendl;friend sample operator+(sample &s);sample sample:operator+(sample &s1,sample &s2)return (s1+s2);void main()sample obj1(10);sample obj2(20);sample obj3;obj3=obj1+obj2;disp();提示:(1) 利用友元函数进行运算符重载时,参数为多个同类对象的引用,如friend sample operator+(sample &s1,sample &s2);(2) 友元函数为类外部的函数,而非类中的成员函数,其定义格式与普通函数相同,如sample operator+(sample &s1,sample &s2)(3) 思考修改上述程序,如何利用成员函数实现运算符的重载? 2、定义一个Matric类,并对()运算符进行重载,修正程序中的错误,使程序有如下输出: 5,6,7,8,9,程序代码如下:#include class Matrix public Matrix(int r,int c) row=r; col=c; elem=new doublerow*col; double operator()(int x,int y) return elemcol*(x-1)+y-1; Matrix() delete elem; private: double *elem; int row,col;void main() Matrix m(5,8); for(int i=0;i5;i+) m(i,1)=i+5; for(i=0;i5;i+) coutm(i,1),; coutendl;提示与分析:(1) 类中成员的访问属性(权限)主要有三种public、private和protected,说明成员的访问属性时需要使用“:”。(2) 利用成员函数进行运算符重载的格式为: operator (参数列表),如,double & operator()(int x,int y)。(3) 构造函数与虚构函数名称类似,构造函数名与类名相同,但析构函数名还包括“”符号。(4) 使用new分配堆空间,在使用完成后,需要使用delete释放堆空间,如果是数组需要配合使用“”,如,delete elem;3、设计一个用于人事管理的人员类。数据成员包括编号、姓名、性别、出生日期、身份证号等。其中,“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。并对人员类重载“=”运算符和“=”运算符,“=”运算符判断两个人员类对象的身份证号属性是否相等;“=”运算符实现人员类对象的赋值操作。提示与分析:(1) 建立一个人员(Person)类。(2) 包括数据成员:编号(No)、姓名(Name)、性别(Sex)、出生日期(Birthday)、身份证号(ID),其中,Name、Sex、ID使用字符数组存储,No为整型,而Birthday为日期(TDate)类子对象。(3) 构建一个日期(Date)类,包括数据成员:年(Year)、月(Month)和日(Day);成员函数包括构造函数和显示日期(print)。(4) Person类的成员函数为信息录入(inputInfo)和显示(printInfo),函数声明如下:void inputInfo(char *pName,char *pSex,char *pID);void printInfo();(5) 利用成员函数重载“=”运算符,成员函数定义如下:int operator =(Person &person)return strcmp(this-ID,person.ID);(6) 利用成员函数重载“=”运算符,成员函数定义如下:Person& operator =(Person &person)strcpy(Name,person.Name);strcpy(Sex,person.Sex);strcpy(ID,person.ID);return *this;(7) 在main函数中可以如下使用:void main()Person per1,per2;per1.inputInfo(李杰,男;per2.inputInfo(王晓明,男;per1.printInfo();if(per1=per2)cout身份证号不同;elsecout身份证号相同;per1=per2;per1.printInfo();(8)思考 Person& operator =(Person &person);中运算符函数的返回类型是什么?return *this;语句中,this代表什么?“=”和“=”能否使用友元函数来实现运算符重载?4、定义点(Point)类,数据成员包括整型坐标X,Y;对Point类重载“+”(自增)、“-”(自减)运算符,实现对坐标值的改变。提示与分析:(1) 利用成员函数重载前置+运算符,函数定义如下:Point& operator +()+X;+Y;return *this;(2) 利用成员函数重载后置+运算符,函数定义如下:Point& operator +(int) /int为虚拟参数,仅控制格式X+;Y+;return Point(X-1,Y-1);(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家开放大学(电大)《数据库原理及应用》期末考试备考试题及答案解析
- 2025年专职安全员C证考试题库完整版及答案解析
- 2025年国家开放大学《人才培养与发展》期末考试备考试题及答案解析
- 炉台安全教育培训试题及答案解析
- 2025年国家开放大学《公司经营法规》期末考试备考试题及答案解析
- 高中物理实验操作规程及记录表
- 2025年国家开放大学《文学与传媒学》期末考试备考试题及答案解析
- 品牌推广岗职责说明书
- 小学古诗文教学设计与课堂活动
- 合理用药整改方案及实施要点
- 铁路相关课件
- 中国工商银行2026年度校园招聘考试参考题库及答案解析
- 日语五十音图课件
- 2025年秋新北师大版数学二年级上册全册教案
- 2025年排污许可试题及答案
- 《大学美育(AIGC版微课版)》课件 项目二 绘画之美
- .新课7 必修第一册Unit4 Loo.king good,feeling good (词汇+课文)(译林版2020)(解析版)2025年初升高英语无忧衔接(通.用版)
- 复发转移性宫颈癌诊疗指南(2025版)解读课件
- 安全注射标准WST856-2025学习解读课件
- 工业煤气安全知识培训课件
- 初三数学二次函数测试试卷及答案
评论
0/150
提交评论