VC++程序设计 -第十三篇运算符重载.pdf

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十三章运算符重载 在非面向对象的程序设计语言中,所有的运算符都已预先定义了它们的用法 及意义,并且这种用法是不允许用户改变的。在 C++ 中,允许程序设计者重新定 义已有的运算符,并能按用户规定要求去完成特定的操作,这就是运算符的重载。 运算符的重载从另一个方面体现了 OOP 技术的多态性,且同一运算符根据不同 的运算对象可以完成不同的操作。 13.1 运算符重载 对于面向对象的程序设计来说,运算符的重载可以完成两个对象之间的复杂 操作,如二个对象间的加法,二个对象间的减法等。这种运算对于用户来说应该 是透明的。运算符重载的原理是:一个运算符只是一个具有特定意义的符号,只 要我们告诉编译程序在什么情况下如何去完成特定的操作,而这种操作的本质是 通过特定的函数来实现的。 13.1.1 重载运算符 为了重载运算符,必须定义一个函数,并告诉编译器,遇到这个重载运算符 就调用该函数,由这个函数来完成该运算符应该完成的操作。这种函数称为运算 符重载函数,它通常是类的成员函数或者是友元函数。运算符的操作数通常也应 该是对象。 定义运算符重载函数的一般格式为: type ClassName :: operator @(Arg) { ; // 函数体 } 其中 type 为函数返回值的类型,ClassName 为运算符重载函数所在的类名,@为 要重载的运算符,Arg为函数的形参表,operator 是关键字,它与其后的一个 运算符一起构成函数名。由于运算符重载函数的函数名是以特殊的关键字开始 的,编译器很容易与其它的函数名区分开来。 例 13.1 定义一个复数类,重载+和-运算符,使这二个运算符能直接完成 复数的加法和减法运算。 #include iostream.h class Complex{ float Real, Image; public: Complex(float r=0,float i=0){Real=r;Image=i;} float GetR() {return Real;} float GetI(){return Image;} void Show() { cout Real=Real\tImage=Image\n; } Complex operator +(Complex ); //重载运算符+ Complex operator +(float ); //重载运算符+ void operator +=(Complex ); //重载运算符+= void operator =(Complex ); ////重载运算符= }; Complex Complex::operator +( Complex c) { Complex t; t.Real=Real + c.Real; t.Image = Image + c.Image; return t; } Complex Complex::operator +(float s) { Complex t; t.Real =Real + s; t.Image = Image; return t; } void Complex::operator +=(Complex c) { Real= Real + c.Real; Image = Image + c.Image; } void Complex::operator =(Complex c) { Real = c.Real; Image =c.Image; } void main(void ) { Complex c1(25,50),c2,c3(100,200); Complex c,c4(200,400); c1.Show(); c2=c1

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档