第6章运算符重载.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文档。上传文档
查看更多
第6章运算符重载.ppt

第6章 运算符重载 运算符重载是C++的一项强大功能。通过重载,可以扩展C++运算符的功能,使它们能够操作用户自定义的数据类型,增加程序代码的直观性和可读性。 6.1 运算符重载基础 1、运算符重载的概念 C++的运算 符对语言预定义类型是重载的 int i= 2+3; double j=2+4.8; float f=float(3.1)+float(2.0); 对于上面的3个加法表达式,C++系统提供了类似于下面形式的运算符重载函数: int operator+(int, int); double operator+(int,double); float operator+(float,float); 6.1 运算符重载基础 C++允许程序员通过重载扩展运算符的功能,使重载后的运算符能够对用户自定义的数据类型进行运算。 比如,设有复数类Complex,其形式如下: class Complex{ double real,image; public: ...... }; 假设定义了下面的复数对象,并且要实现两个复数相加的运算。 Complex c1,c2,c3; …… c1=c2+c3; 6.1 运算符重载基础 why? 使程序便于编写和阅读 使程序定义类型与语言内建类型更一致 how? 1.使用特殊的成员函数 2.使用自由函数,一般为友元函数 6.1.3 运算符重载的语法 运算符的计算结果是值,因此运算符函数是要返回值的函数。其重载的语法形式如下: 返回类型 operator@(参数表) 其中,operator是C++的保留关键字,表示运算符函数。@代表要重载的运算符,它可以是前面列举的可重载运算符中的任何一个。 6.1.4 类运算符的重载 1、C++为类默认的重载运算符 ① 赋值运算(=); ② 取类对象地址的运算函符(); ③ 成员访问运算(如“.”和“-”)。 这些运算符不需要重载就可以使用,但要在类中使用其他运算符,就必须明确地重载它们。 6.1.4 类运算符的重载 2、类运算符重载形式 (1)作为类成员函数的运算符重载 以类成员形式重载的运算符参数比实际参数少一个,第1个参数是以this指针隐式传递的。 class Complex{ double real,image; public: Complex operator+ (Complex b) {……} ...... }; 6.1.4 类运算符的重载 (2)作为友元函数的运算符重载 如果将运算符函数作为类的友元重载,它需要的参数个数就与运算符实际需要的参数个数相同。比如,若用友元函数重载Complex类的加法运算符,则形式如下: class Complex{ …… friend Complex operator+(Complex a,Complex b);//声明 //...... }; Complex operator+(Complex a,Complex b){……} //定义 6.2 重载二元运算符 1、二元运算符的调用形式与解析 a@b 可解释成 a.operator@(b) 或解释成 operator@(a, b) 6.2.1 作为成员函数重载 class X{ …… T1 operator@(T2 b){ ……}; } 其中,T1是运算符函数的返回类型,T2是参数的类型,原则上T1、T2可以是任何数据类型,但事实上它们常与X相同。 6.1.4 类运算符的重载 【例6-1】 有复数类Complex,利用运算符重载实现复数的加、减、乘、除等复数运算。 //Eg6-1.cpp #includeiostream using namespace std; class Complex { private: double r, i; public: Complex (double R=0, double I=0):r(R), i(I){ }; Complex operator+(Complex b); Complex operator-(Complex b); Complex operator*(Complex b); Complex operator/(Complex b); void display(); }; Complex Complex::operator +(Complex b){return Complex(r+b.r,i+b.i);} Complex Complex::operator -(Complex b){return Complex(r-b.r

文档评论(0)

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

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

1亿VIP精品文档

相关文档