第10章 运算符重载 C++ 程序的设计.pptVIP

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

第10章 运算符重载 Complex Complex::Add(Complex c) {Complex temp; temp.real = real + c.real; temp.imag = imag + c.imag; return temp; } class Complex {private: double real; double imag; public: Complex(){real=0;imag=0;} Complex(double r, double i){real=r;imag=i;} void Print(){cout ( real , imag ) endl;} Complex Add(Complex c); }; int main() {Complex a(1, 2), b(3, 4), c; c = a.Add(b); cout c = ; c.Print(); } 复数加减法只能调用成员函数实现,不能使用符号“+”和“-”,可以通过重载“+”、“-”运算符,实现如c=a+b这样的调用方式 运算符重载:运算符重载的实质就是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时,产生不同的行为。运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。 例:用运算符实现复数的加法运算 Complex Complex:: operator +(Complex c) {Complex temp; temp.real = real + c.real; temp.imag = imag + c.imag; return temp; } int main() {Complex a(1, 2), b(3.0, 4.0), c; c =a+b; cout c = ; c.Print(); } 程序运行结果为: c=(4,6) 该语句相当于调用函数 operator +(Complex c) c=a.operator+(b), 实现两个复数的加法运算。 class Complex {private: double real; double imag; public: Complex(){real=0;imag=0;} Complex(double r, double i){real=r;imag=i;} void Print(){cout ( real , imag ) endl;} Complex operator+(Complex c); }; 运算符重载的格式 运算符重载为类的成员函数 运算符重载为类的友元函数 运算符重载的规则 除“.”、“*”、“::”、“?:”和“sizeof”等几个运算符不能重载外,C++中几乎所有的运算符都可以重载。 运算符被重载后,其优先级和结合性不会改变。 不能改变运算符操作对象的个数。 运算符的意义应不变。 用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“”不必用户重载。 Complex Complex:: operator -(Complex c) {Complex temp; temp.real = real - c.real; temp.imag = imag - c.imag; return temp; } #include iostream class Complex {private: double real; double imag; public: Complex(); Complex(double r, double i); void Print(); Complex operator +(Complex c); Complex operator -(Complex c); }; int main() {Complex a(1, 2), b(3.0, 4.0), c,d; c =a+b; d =a-b; cout c = ; c.Print(); cout “d = ; d.Print(); } 程序运行结果为: c = (4, 6) d = (-2, -2) 总结: 设有双目运算符 B,如果要重载 B 为类的成员函数,使之能够实现表达式 oprd

文档评论(0)

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

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

1亿VIP精品文档

相关文档