- 1、本文档共64页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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( )
您可能关注的文档
- 7月心电图课件解读.ppt
- (第7章典型结合件的精度设计及其检测)机械精度设计与检测讲解.ppt
- (苏教版)二年级语文课件__有趣的发现讲解.ppt
- 7电力系统稳定性解读.ppt
- 7特殊区域保护法解读.ppt
- (苏科版)八年级数学上册《第5章+平面直角坐标系+5.1物体位置的确定》课件讲解.ppt
- 7燕子南飞解读.ppt
- 7电工安全操作规程解读.doc
- 7测试系统设计解读.ppt
- (苏教版)五年级语文下册课件七律·长征3讲解.ppt
- 2025届云南省丽江市高中毕业生复习统一检测化学试题及答案.docx
- 2025届云南省丽江市高中毕业生复习统一检测生物试题及答案.docx
- 2025届云南省丽江市高中毕业生复习统一检测英语试题及答案.docx
- 2025届云南省丽江市高中毕业生复习统一检测物理试题及答案.docx
- 显性与隐性双重天津商业步行街改造评价调查.pdf
- 2025届云南省丽江市高中毕业生复习统一检测语文试题及答案.docx
- 奔驰威霆TVC创意脚本提报.pptx
- 2025届云南省丽江市高中毕业生复习统一检测历史试题及答案.docx
- 2025届浙江省Z20名校联盟高三上学期第二次联考地理试题及答案.docx
- 2025届浙江省北斗星盟高三上学期12月月考政治试题及答案.docx
文档评论(0)