重载分为函数重载和运算符重载.pptVIP

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
重载分为函数重载和运算符重载

第9章 重载 1.重载的概念 (1) 重载的概念 (2) 2.函数重载 2.1 函数重载的区分机制 1.用参数区分函数重载的不同调用版本 例9.2 试分析下面的程序及调用结果,并说明get_area()函数是否属于函数重载。 2.const关键字可以被用于参与对重载函数的区分 例9.3 常成员函数举例。 3.函数重载的二义性 函数缺省参数是函数重载的一种特殊形式。但带缺省参数的函数重载时有可能发生二义性错误。 2..2 构造函数重载 例9.4 时间类的构造函数重载。1 例9.4 时间类的构造函数重载。2 例9.4 时间类的构造函数重载。3 例9.4 时间类的构造函数重载。4 2.3 拷贝初始化构造函数 例9.5 拷贝初始化构造函数的定义和调用。1 例9.5 拷贝初始化构造函数的定义和调用。 2 拷贝初始化构造函数在以下三种情况下都会被调用: 例9.6点类及拷贝初始化构造函数测试程序1 例9.6点类及拷贝初始化构造函数测试程序2 3 运算符重载 3.2类成员运算符重载 类成员运算符重载的实现 例9.7矢量类加法、减法及反向运算符重载 1 例9.7矢量类加法、减法及反向运算符重载 2 3.3 友元运算符重载 将例9.7中的成员运算符重载改造成友元运算符重载 1 例9.7矢量类加法、减法及反向运算符重载 2 3.4 运算符重载举例 例9.9 ++运算符重载 2.下标运算符[ ]的重载 例 下标运算符[ ]的重载 3.函数调用运算符()的重载 例9.10 通过重载函数调用运算符求解一元二次方程。 4.赋值运算符重载 缺省赋值运算与对象浅复制可能发生的问题 用户定义的深复制策略赋值运算符重载 1 用户定义的深复制策略赋值运算符重载 2 5.复数类中的运算符重载 例9.11一个完整复数类定义及测试程序 2 例9.11一个完整复数类定义及测试程序 3 下标运算符operator[ ]被看作是一个二元运算符,必须重载为某一个类的成员函数。其一般使用格式为: 对象名[整数表达式] 其中对象名为左操作数,整数表达式为右操作数。 若obj是类class1的对象,且class1中重载了函数调用运算符operator[ ],则函数调用 obj[n]; 被解释为:obj.operator[ ] (n); 下标运算符重载用于动态构造对象数组。在对象数组的创建及访问时必须保证数组不越界。为了防止数组越界,应该事先作出预防性安排。在C++中,这是通过异常处理技术实现的。 class String{ char *contents; int length; public: String(char *str) { length=strlen(str); contents=new char[length+1]; strcpy(contents,str); } char operator [](int j) { if(j=0 jlength) return contents[j]; } void print(String s) { int j; for(j=0;j length;j++) couts[j] ; coutendl; } }; 函数调用运算符operator ()被看作是一个二元运算符,必须重载为某一个类的成员函数。其一般使用格式为: 对象名(参数表) 其中对象名为左操作数,参数表为右操作数。 若obj是类class1的对象,且class1中重载了函数调用运算符operator (),则函数调用 obj(arg1,arg2,…); 被解释为:obj.operator () (arg1,arg2,…); 对于比较复杂的类中频繁使用的复杂算法使用重载函数调用运算符能够有效地简化程序行的书写。 #includeiostream.h #includemath.h class ax2bxc{ //定义一元二次方程类 double a,b,c; public: ax2bxc(){a=1;b=1;c=1;} void ax2bxc::operator ()(double A,double B,double C); // 重载函数调用运算符求解一元二次方程 }; void ax2bxc::operator ()(double A,double B,double C) { a=A;b=B;c=C; if(a==0) coutError!!! The value of (a) can not be 0!endlendl; else{

文档评论(0)

wujianz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档