数据结构课件C++版第一章C++知识概要幻灯片.ppt

数据结构课件C++版第一章C++知识概要幻灯片.ppt

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

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档