实验运算符重载设计

上传人:nu****n 文档编号:100859824 上传时间:2022-06-03 格式:DOC 页数:8 大小:123.50KB
返回 下载 相关 举报
实验运算符重载设计_第1页
第1页 / 共8页
实验运算符重载设计_第2页
第2页 / 共8页
实验运算符重载设计_第3页
第3页 / 共8页
点击查看更多>>
资源描述
宁夏师范学院数学与计算机科学学院面向对象程序设计(C+)实验报告实验序号:7 实验项目名称:运算符重载设计学号201304220144姓名黑元专业班级2013级计算机科学与技术一班实验地点文科楼227指导教师马学梅时 间2014.5.15一、实验目的及要求1、理解运算符重载的概念、运算符重载规则;2、熟练掌握双目运算符、单目运算符的重载,能够根据给定要求采用合适的方式实现运算符重载函数;3、熟练掌握流插入运算符“”的重载;4、熟悉不同类型数据之间的转换方法。二、实验设备(环境)及要求硬件:PC(PII以上,128M以上内存)、因特网接入;软件:Windows XP操作系统或更高版本、Office2003或更高版本、Visual C+6.0。实验学时:2学时其他要求:完成验证题目和设计题目;验证题目要求给出运行结果及涉及到的知识点;设计题目写出设计思路、源程序及结果三、实验内容与步骤说明:对下述实验内容给出实验结果并分析总结。 【验证题目】: 验证教材相关例题10.2,10.3,10.4,10.6 ,10.8,10.9,10.1010.2程序代码: #includeusing namespace std;class Complexpublic:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;friend Complex operator+(Complex &c1,Complex &c2);void display();private:double real;double imag;Complex operator+(Complex &c1, Complex &c2)return Complex(c1.real+c2.real ,c1.imag +c2.imag );void Complex:display()cout(real,imagi)endl;int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc1=;c1.display();coutc2=;c2.display();coutc1+c2=;c3.display();return 0;运行结果:10.3程序代码:#includeusing namespace std;class Complexpublic:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;friend Complex operator+(Complex &c1,Complex &c2);void display();private:double real;double imag;Complex operator+(Complex &c1, Complex &c2)return Complex(c1.real+c2.real ,c1.imag +c2.imag );void Complex:display()cout(real,imagi)endl;int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc1=;c1.display();coutc2=;c2.display();coutc1+c2=;c3.display();return 0;运行结果:10.4(1)程序代码:#includeclass String public: String()p=NULL;String(char * str);void display();private:char * p;String:String(char * str)p=str;void String:display()coutp;int main()String string1(Hello),string2(Book);string1.display();coutendl;string2.display();return 0;运行结果:(2)程序代码: # include# includeusing namespace std;class Stringpublic:String()p=NULL;String(char * str);friend bool operator(String &string1,String &string2);void display();private:char * p;String:String(char * str)p=str;void String:display()cout(String &string1,String &string2)if(strcmp(string1.p,string2.p)0)return true;else return false;int main()String string1(Hello),string2(Book);coutstring2)endl;return 0;运行结果:10.6程序代码: # includeclass Timepublic:Time()minute=0;sec=0;Time(int m,int s):minute(m),sec(s)Time operator+();Time operator+(int);void display()coutminute:sec=60)sec-=60;+minute;return * this;Time Time:operator+(int)Time temp(*this);sec+;if(sec=60)sec-=60;+minute;return temp;int main()Time time1(34,59),time2;couttime1:;time1.display();+time1;cout+time1:;time1.display();time2=time1+;couttime1+:;time1.display();couttime2:;time2.display();运行结果: 10.8程序代码:运行结果:10.9程序代码:#include using namespace std;class Complex public: Complex()real=0;imag=0; Complex(double r,double i)real=r;imag=i; operator double() return real; private: double real; double imag; ; int main()Complex c1(3,4),c2(5,-10),c3; double d; d=2.5+c1; coutdendl; return 0;运行结果:10.10程序代码:# includeusing namespace std;class Complexpublic:Complex()real=0;imag=0;Complex(double r)real=r;imag=0;Complex(double r,double i)real=r;imag=i;friend Complex operator+(Complex c1,Complex c2);void display();private:double real;double imag;Complex operator+(Complex c1,Complex c2)return Complex(c1.real+c2.real,c1.imag+c2.imag);void Complex:display()cout(real,imagi)endl;int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+2.5;c3.display();return 0;运行结果:【设计题目】: 定义一个二维方阵类Matrix。通过重载二元运算符“+”、“-”、“*”和一元运算符“”, 来实现矩阵加、矩阵减、矩阵乘以及矩阵转置。【设计要点提示】1.以类成员方式或友元方式在自定义的方阵类Matrix 中重载二元运算符“+”、“-”、“*”和一元运算符“”,用来实现规定的矩阵运算。 首先假定矩阵行列数 r 和c 为固定常数,且被处理的矩阵数据存放于Matrix 类的私有数据成员mem 数组之中,并以类成员方式重载各运算符。下面给出Matrix 类的定义,请对类体内声明的函数给出其定义,完善程序使之实现相应功能。 const int r=3; const int c=3; class Matrix int memrc; /矩阵之r 行 c 列的数据存放于 mem 数组中 public: Matrix (int arc);/1 参构造函数,将参数a所带来的矩阵数据置于mem 数组中 Matrix(); /无参构造函数,将mem 数组各元素置为0 Matrix operator+ (Matrix &); /矩阵加 Matrix operator- (Matrix &); /矩阵减 Matrix operator* (Matrix &); /矩阵乘 Matrix operator (); /矩阵转置 void display(); /输出矩阵 ; /在此补充有关类内部声明的函数的定义/在主函数中使用 Matrix 类对象及各种重载运算符,以验证它们的正确性int main() int a33=1,2,3,4,5,6,7,8,9; int b33=1,2,3, 0,1,2, -1,0,1; Matrix x(a), y(b); cout- x= -endl; x.display(); /按设定格式显示出第一个矩阵xcout- y= -endl; y.display(); /按设定格式显示出第二个矩阵y return 0;完善上述程序代码,上机调试运行。程序代码:运行结果: 2.将上述程序中用于矩阵输出的部分通过重载运算符”实现。程序代码:运行结果: 四、分析与讨论 通过本次实验,我理解了运算符重载的概念、运算符重载规则,熟练掌握乐双目运算符、单目运算符的重载,能够根据给定要求采用合适的方式实现运算符重载函数和流插入运算符“”的重载以及不同类型数据之间的转换方法。五、教师评语签名: 日期: 年 月 日 成绩
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!