《C++面向对象程序设计》_第8章操作符重载.ppt

《C++面向对象程序设计》_第8章操作符重载.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

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

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

1亿VIP精品文档

相关文档