- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C面向对象程序设计》_第8章操作符重载
第8章 操作符重载 8.1 操作符重载的定义 8.2 运算符重载函数的两种形式 8.3 常用运算符的重载:下标运算符的重载、输入输出运算符重载、赋值运算符重、关系运算符重载、new和delete运算符重载、解除引用操作符重载、函数运算符重载 8.4 运算符重载的限制 操作符重载,也叫运算符重载,是C++的重要组成部分,它可以让程序更加的简单易懂,简单的运算符使用可以使复杂函数的理解更直观。 虽然运算符重载听起来好像是C++的外部能力,但是多数程序员都不知不觉地使用过重载的运算符。例如,加法运算符“+”对整数、单精度数和双精度数的操作是大不相同的。这是因为C++语言本身已经重载了该运算符,所以它能够用于int、float、double和其它内部定义类型的变量。 操作符重载可对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。 其目的是:扩展C++中提供的运算符的适用范围,以用于类所表示的抽象数据类型。同一个运算符,对不同类型的操作数,所发生的行为不同。 8.1 操作符重载的定义 例8.1 #include iostream using namespace std; class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex complex_add(Complex c2); //声明复数相加函数 void display( ); private: double real; //实部 double imag; //虚部 }; Complex Complex∷complex_add(Complex c2) { Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } void Complex∷display( ) { cout″(″real″,″imag″i)″endl; } int main( ) { Complex c1(1,2),c2(3,-4),c3; //定义3个复数对象 c3=plex_add(c2); //调用复数相加函数 cout″c1=″; c1.display( ); //输出c1的值 cout″c2=″; c2.display( ); //输出c2的值 cout″c1+c2=″; c3.display( ); //输出c3的值 return 0; } 运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。 从某种程度上看,运算符重载也是函数的重载。但运算符重载的关键并不在于实现函数功能,而是由于每种运算符都有其约定俗成的含义,重载它们应是在保留原有含义的基础上对功能的扩展,而非改变。 重载运算符的函数一般格式如下: 函数类型 operator 运算符名称 (形参表列) { 对运算符的重载处理 } 例如,想将“+”用于Complex类(复数)的加法运算,函数的原型可以是这样的: Complex operator+ (Complex c1,Complex c2); operator是c++的关键字,专门用于定义重载运算符的函数。operator +就是函数名,表示对运算符+重载。 例8.2 class Complex { public: Complex( double = 0.0, double = 0.0 ); Complex operator+( const Complex ) const; Complex operator-( const Complex ) const; private: double real; // real part double imaginary; // imaginary part }; Complex Complex::operator+( const Complex operand2 ) const { return Complex( real + operand2.real, imaginary + operand2.imaginary ); } Complex Comple
您可能关注的文档
最近下载
- 沪教版七年级数学上学期考试满分全攻略第10章分式【单元提升卷】(沪教版)(原卷版+解析).docx VIP
- 学生心存感恩主题国旗下讲话稿.docx VIP
- 《妇幼保健学》课件——第十二章 围绝经期保健.pptx VIP
- 2024年全国职业院校技能大赛中职组(舞蹈表演赛项)考试题库(含答案)_已识别.pdf VIP
- 译林四上 Project1 教学课件.ppt VIP
- 乳腺癌的护理常规课件.pptx
- 2023年驾培相关项目运行指导方案.pdf VIP
- 个案工作 第八章-儿童辅导.pptx VIP
- 2024年山西航空产业集团有限公司人员招聘考试题库及答案解析.docx
- 运动解剖学(李世昌)第4章 消化系统.ppt VIP
文档评论(0)