ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:44.82KB ,
资源ID:3903537      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3903537.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++实验报告十二.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++实验报告十二.docx

1、C+实验报告十二VC+程序设计实验报告 实验十二题目:运算符重载 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 教师评语 教师签名: 年 月 日成绩评定备 注一、实验目的1. 理解运行时的多态性和编译时的多态性2掌握运算符重载的两种方法二、实验内容1. 验证例6.2,根据课本上的程序分析,验证分析结果2. 验证例6.43. 理解几个常用的运算符重载实例三、实验结果及其结果分析例6.2(1) 源程序:#include#includeclass String char name256;public: String(char * str) strcpy(name,s

2、tr); String() String() String operator + (const String&); void display() coutThe string is:nameendl; ;static char * str;String String:operator + (const String& a) strcpy(str,name); strcat(str,a.name); return String(str);void main() str=new char256; String demo1(Visual C+); String demo2(6.0); demo1.d

3、isplay(); demo2.display(); String demo3=demo1+demo2; demo3.display(); String demo4=demo3+Programming.; demo4.display(); delete str;(2) 实验结果:(3) 程序分析:考虑上述表达式:demo3 + “Programming.”如果将此运算符重载为成员函数,则上述表达式被解释为:demo3.operator + (“Programming.”)然后编译程序将调用String类的构造函数将“Programming.”转换为String类的对象,最后被解释为: demo

4、3.operator + (String(“Programming.”)匹配如下的成员函数得最后结果:String operator + (const String&);operator+函数体中的最后一条语句return String(str);执行时不调用拷贝构造函数。但是若此函数定义改为:String String:operator + (const String &a) String s; strcpy(s.name,name); strcat(s.name,a.name); return s;则返回s时要调用拷贝构造函数。main()函数中的语句String demo3=demo1+

5、demo2;不调用对赋值号的重载函数,也不调用拷贝构造函数创建demo3,这只是初始化语句,如果把该语句改为:string demo3;demo3=demo1+demo2;这时会调用对的重载函数。例6.4(1) 源程序:#include#includeclass String char name256;public: String(char * str) strcpy(name,str); String() String() friend String operator + (const String&,const String&); void display() coutThe string

6、 is:nameendl; ;static char * str;String operator + (const String& a,const String& b) strcpy(str,a.name); strcat(str,b.name); return String(str);void main() str=new char256; String demo1(Visual C+); String demo2(6.0); demo1.display(); demo2.display(); String demo3=demo1+demo2; demo3.display(); String

7、 demo4=demo3+Programming.; demo4.display(); String demo5=Programming.+demo4; demo5.display(); delete str;(2) 实验结果:(3)程序分析:考虑上述表达式:demo3 + “Programming.”如果将此运算符重载为友元函数,则上述表达式被解释为:operator + (demo3 + “Programming.”)然后编译程序将调用String类的构造函数将“Programming.”转换为String类的对象,最后被解释为:operator + (demo3,String(“Prog

8、ramming.”)匹配成员函数:friend String operator + (const String&,const String&);再考虑上述表达式:“Programming.”+ demo4如果将此运算符重载为成员函数,则此表达式被解释为:“Programming.”.operator + (demo4)但“Programming.”不是一个对象,不能调用成员函数,所以编译系统将报告如下的错误:error C2677:binary+:no global operator defined which takes typeclass String(or there is no acc

9、eptable conversion)如果将此运算符重载为友元函数,则上述表达式被解释为:operator + (“Programming.”,demo4)然后编译程序将调用String类的构造函数将“Programming.”转换为String类的对象,最后被解释为:operator + (String(“Programming.”),demo4)最后匹配成员函数:friend String operator + (const String&,const String&);四、实验收获与体会本次实验主要练习了跟运算符重载有关的程序的调试编译。通过本次实验,我更加深入地理解了运行时的多态性和编译时的多态性的概念,也能够正确掌握运算符重载的两种方法。运算符重载的实质就是函数重载,重载运算符可以通过成员函数或者友元函数。在实现过程中,首先把指定的运算符表达式转换为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型确定需要调用的函数,这个过程是在编译过程中完成的。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1