- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运算符重载的概念 重载是面向对象程序设计的基本特点之一。重载就是重新赋予新的涵义的意思。函数重载就是在已有函数的基础上,使用相同的函数名和不同的函数参数重新实现不同的功能,这样,相同的函数名可以代表不同的操作,也就是“一名多用”。 加、减、乘、除、大于、小于等运算符也可以重载,也就是说,针对不同数据类型的运算调用不同的操作规则。实际上,C++系统已经重载了基本数据类型的运算符,因此,在进行基本数据类型(如int,float,double等)的运算时,可以直接使用“+”、“-”、“”等运算符,而不去考虑系统内部为解释这些运算符所调用的操作代码。 例如,有以下语句: int a=3, b=5, c; c=a+b; //A C++系统在执行到A行时,完成的是 (int)=(int)+(int); 运算,即将两个整型数变量的内容相加,结果赋值给另外一个整型数变量。 再看下列语句: double x=3.0, y=6.5; z; z=x+y; //B C++系统在执行到B行时,完成的是 (double)=(double)+(double); 的运算,即将两个双精度型变量的内容相加,结果赋值给另外一个双精度型变量。 因为整型数的存储格式与双精度数的存储格式不同,所以整型数加法执行的操作步骤当然与双精度数加法执行的操作步骤不同。同样是“+”这个符号,整型数加法执行的是一段代码,双精度数加法执行的是另外一段不同的代码,这实际上就是“+”这个运算符的重载,只不过这个重载是C++系统已经编写好的,系统会根据“+”运算符左右的参数类型,自动调用相应的重载函数,完成不同的操作步骤。 运算符重载就是赋予已有的运算符多重含义。C++允许用户重新定义运算符,使它能够用于特定类的对象,执行特定的功能。 Tri tria(3,4,5), trib(5,5,5), tric; tric=tria+trib; //C C行描述的就是两对象相加。在C++系统中,“+”运算符并不支持对象相加,或者说,C++系统并没有编写两三角形类对象相加的重载函数。但是,C++允许用户重新定义“+”,也就是允许用户编写“+”运算符的重载函数,使它可以完成三角形类对象的相加,至于三角形对象的加法具体执行的是边长相加还是面积相加,是由用户编写的重载程序决定的。 运算符的重载与一般函数的重载有很大不同,它的调用是隐含的,且其格式是固定的,换句话说,重载运算符函数的名称和参数类型、个数等都是系统规定好的。只有按照系统认可的格式编写重载运算符函数,编译器才能在出现运算符时,根据具体的运算对象的类型“隐含”调用合适的重载函数。 C++语言规定: ①只能对已有的运算符重载,不能增加新的运算符。 ②不是所有的运算符都允许重载,允许重载的运算符如表12.1所示。 ③重载的运算符仍保持原先系统规定的优先级和结合性。例如,若同时重载了+(加法)和*(乘法)运算符,则运算符*的优先级仍高于运算符+的优先级,且结合性不变。 ④运算符重载不能改变运算符运算对象(即操作数)的个数。如关系运算符“”、“”等是双目运算符,重载后仍为双目运算符,需要两个参数。 ⑤不能重载的运算符有如下几个: ?: (不支持三目运算符重载) . (成员运算符不能重载) - (成员指针运算符不能重载) :: (作用域限定运算符不能重载) sizeof (字节个数运算符不能重载) 运算符重载为成员函数 双目运算符重载为成员函数 : 在类中声明的格式如下: 类名operator运算符(参数表); 其中,operator是关键字,表明该函数是运算符的重载函数。引用该运算符重载函数的类对象是第一操作数,参数表中的参数是第二操作数。例如,在三角形类体中声明的重载“+”运算符的成员函数格式说明如图所示: 在程序中这样使用运算符“+”: Tri tria(3,4,5), trib(5,5,5),tric; tric=tria+trib; //调用重载函数,重新解释了加法,相当于tric=tria.operator+(trib); 程序语句说明如图所示: 编译系统对“隐式”调用的解释如图所示: 赋值运算符重载为成员函数 赋值运算符的种类很多,如“+=”,“-=”,“%=”,“=”等,分为复合的赋值运算符(如“+=”等)和一般的赋值运算符(“=”)两种。 复合的赋值运算符可以重载为成员函数和友元函数。重载为成员函数时的格式与双目运算符类似,也是运算符左边的操作数调用右边的操作数,不同的是运算后左边的操作数被重新赋值,如果有函数返回值的话,应该返回调用对象本身。 class Fra //分数类 { int num; //私有数据,表示分数的分子 int den; //私有数据,表示分数的分母 public:
您可能关注的文档
- 精细化学品大全-农药卷.pdf
- 卡培他滨合成工艺研究.doc
- 锂电应用基础知识培训考试试题-涂礼斌.doc
- 锂电应用基础知识-涂礼斌.ppt
- 辣椒高产优质栽培.pdf
- 两串电池保护PCB'A统计表.pdf
- 利用Mg含量控制Zn_1_x_Mg_xO薄膜压敏电阻器的阈值电压.pdf
- 两串N并电池PACK组装方案.pdf
- 量測能力檢定(GR&R)介紹-8.ppt
- 廖建军-农药、化肥的安全使用及主要农作物病虫害综合防治.ppt
- 南京理工大学《VC++程序设计》C++讲义第15章.ppt
- 南京理工大学《VC++程序设计》C++讲义第13章.ppt
- 南京理工大学《VC++程序设计》VC++_2008试卷标准答案与评分标准.doc
- 南京理工大学《VC++程序设计》VC++程序设计_2004.doc
- 南京理工大学《VC++程序设计》vC++程序设计_2008.doc
- 南京理工大学《VC++程序设计》VC++程序设计_2006.doc
- 南京理工大学《高等数学》01届高等数学(上)A卷.doc
- 南京理工大学《高等数学》01届高等数学(上)B卷.doc
- 南京理工大学《VC++程序设计》VC++书稿第1至4章.doc
- 南京理工大学《高等数学》1-7.ppt
原创力文档


文档评论(0)