- 1、本文档共127页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 运算符重载 #includeiostrem.h class complex { public: complex(double r=0.0,double i=0.0) {real=r;imag=i;} void display(); private: double real; double imag; } 运算符重载 声明如下对象: complex a(1,4),b(2,5); 如果要对a,b进行加法运算,该如何实现呢? 希望用 a+b, 但编译器会不知道如何完成这个加法。 需要我们编程序来说明“+”在作用于complex类对象时,该实现什么样的功能,这就是运算符重载。 运算符重载 实现过程: 首先把指定的运算表达式转换为对运算符函数的调用,运算对象转换为运算符函数的实参 然后根据实参的类型来确定需要调用的函数(在编译过程中完成) 优点:允许改变使用于系统内部的运算符的操作方式,以适应用户自定义类型的类似运算。 运算符重载 规则: 1.C++中除了五个运算符以外,都可以重载。 2.重载之后运算符的优先级和结合性都不变 3.针对新类型数据的实际需要,对原有运算符进行适当改造。一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自己定义的 运算符重载 不能重载的5个运算符 关系运算符 . 成员指针运算符 * 作用域分辨符 :: 三目运算符 ?: sizeof运算符 运算符重载的两种形式 重载为类的成员函数 函数类型 operator 运算符(形参表) { 函数体; } 运算符重载的两种形式 函数类型:指定了重载运算符的返回值类型,也就是运 算结果类型; operator 定义运算符重载的关键字 运算符:要重载的运算符名称,必须是C++中可重载的运算符 形参表:给出重载运算符所需要的参数和类型。 运算符重载的两种形式 重载为类的友员函数 Friend 函数类型 operator 运算符(形参表) { 函数体; } 运算符重载 当运算符重载为类的成员函数时,函数的参数个数比原来的操作数个数要少一个(后置“++,--”除外) 原因:如果某个对象使用了重载了的成员函数,自身的数据可以直接访问,就不需要再放在参数表中进行传递,少了的操作数就是该对象本身。 运算符重载 当重载为类的友员函数时,参数个数与原操作数个数相同。 原因:重载为类的友员函数时,友员函数对某个对象的数据进行操作,就必须通过该对象的名称来进行,因此使用到的参数都要进行传递,操作数的个数就不会有变化。 运算符重载 运算符重载的实质:函数重载。重载为成员函数,就可以自由访问本类的数据成员。 实际使用时,总是通过该类的某个对象来访问重载的运算符。 如果时双目运算符,一个操作数是对象本身的数据,由this指针指出,另一个操作数则需要通过运算符函数的参数表来传递 运算符重载 对于双目运算符B,如果要重载B为类的成员函数,使之能实现 oprd1 B oprd2 其中oprd1为A类的对象,则应当把B重载为A类的成员函数,该函数只有一个形参,形参的类型是oprd2所属的类型。 经过重载后,表达式oprd1 B oprd2就相当于调用oprd1.operator B(oprd2) 运算符重载 #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(); /输出复数 private: double real; //实部 double imag; //虚部 } 运算符重载 #includecomplex.h complex complex::operator +(complex c2) //重载运算符函数实现 { return complex(real+c2.real,imag+c2.imag); //创建一个临时无名对象作为返回值 } 运算符重载 complex complex::operator -(complex c2) //重载运算符函数实现 { return complex(real-c2.real,imag-c2.imag); //创建一个临时无名对象作为返回值 } void complex::disp
您可能关注的文档
最近下载
- 第1部分 专题05:记叙文阅读之环境描写(练习)-中考语文复习 现代文阅读(全国版)(含答案及解析版).docx
- 人教版2019年初中物理 电能、电路、电功综合专题练习(含答案).doc
- 超星学习通 乡村振兴的实践探索(北京大学)章节测验答案尔雅网课答案.pdf VIP
- 2024年6月第英语六级真题(全3套)及答案解析.pdf
- (完整版)数量关系公式.pdf
- 山东省政府采购专家测评题库800-1000.docx VIP
- 新课标人教版高中英语教材词汇表 1-8册(1).doc
- GB/T 5686.7-2022锰铁、锰硅合金、氮化锰铁和金属锰 硫含量的测定 红外线吸收法和燃烧中和滴定法.pdf
- 河北省石家庄市2024年中考一模语文试卷(含答案).pdf VIP
- 全国卷书面表达说题比赛课件.pptx
文档评论(0)