网站大量收购独家精品文档,联系QQ:2885784924

7运算符重载解读.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7运算符重载解读

第7章 运算符重载 7.1 重载运算符的目的 7.2 运算符重载语法 7.3 成员运算符函数 7.4 友元运算符函数 7.5 成员运算符函数与友元运算符函数比较 7.6 “++”和“--”的重载 7.7 赋值运算符“=”的重载 7.8 下标运算符”[ ]”与函数调用运算符”( )”的重载 7.9 不同数据类型之间的转换 7.1 重载运算符的目的 C++中预定义的运算符(如+、-、*、/等)可直接用于操作基本数据类型,但不能直接应用于操作自定义数据类型(如类)。 通过运算符重载,可把C++运算符的定义扩展到操作自定义数据类型。 用简单的运算符操作自定义数据类型,构成的表达式形式更简洁、易懂,从而使得C++代码更直观,更易读。 函数式的表达方法 class Complex{ private: double real; double image; public: Complex( double r=0.0,double i=0.0); }; //… Complex c1,c2,c3; c3 = c1+c2; c3 = c1*c2; 运算符函数 class Complex{ / / very simplified Complex double re, im; public: Complex(double r, double i) : re(r) , im(i) { } Complex operator +(Complex) ; Complex operator *(Complex) ; }; void f( ) { Complex a(1, 3.1) ; Complex b(1.2, 2) ; Complex c = b; a = b+c; b = b+c*a; c = a*b ; } 7.2 运算符重载语法 C++将运算符看作一种特殊类型的函数,运算符的重载是通过定义一个运算符函数实现的。在需要执行被重载的运算符时,系统就自动调用运算符函数。因此,运算符重载实质上是函数的重载。 运算符函数名由关键字operator 和重载的运算符组成。 运算符函数的一般格式 函数类型 operator 运算符(形参列表) { 对运算符的重载处理 } 运算符函数可以是类的成员函数,也可以是类的友元函数,还可以是既非类的成员函数也不是友元函数的普通函数。 运算符重载的限制 (1)C++中有5个运算符不能重载: . (成员访问运算符) .* (成员指针访问运算符) :: (作用域解析运算符) sizeof (长度运算符) ?: (条件运算符) (2)运算符重载不能改变运算符的优先级、结合性和操作数个数。 运算符重载的限制(续) (3)重载的运算符必须和用户定义的自定义类型的对象一起使用,运算符函数的参数至少要有一个自定义类型。 7.3 成员运算符函数 重载运算符时,可使运算符函数为类的成员函数,这样就可以通过该类的对象来访问重载的运算符。 当运算符为双目运算符时,是左边对象对运算符函数进行调用,右边对象通过运算符函数的参数传递过来。例如: 重载“+”运算符,使之实现表达式a+b,其中a和b是类A的对象,则可以把“+”重载为类A的成员函数,该函数只有一个形参,形参的类型是b所属的类型,即类A。经过重载后,表达式a+b就相当于函数调用a.operator +(b)。 成员运算符函数 当运算符为单目运算符时,运算符函数不需要参数(后置++和后置--除外)。例如: 重载“--”运算符,使之实现表达式--a,其中a是类A的对象,则可以把“--”重载为类A的成员函数,该函数没有形参。经过重载后,表达式--a就相当于函数调用a.operator --()。 简单复数类的运算符重载 #includeiostream.h class Complex //复数类声明 { public: //外部接口 Complex(double r=0.0,double i=0.0) {real=r;imag=i;} //构造函数 Complex operator + (Complex c2); //+重载为成员函数 Complex operator - (Complex c2); //-重载为成员函数 void display( )

文档评论(0)

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

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

1亿VIP精品文档

相关文档