第八课多态性解析.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
School of Information and Engineering, Shenzhen University * 运算符重载函数的定义形式为: 函数类型 运算符重载标识 重载运算符(形参表) {函数体} 运算符重载标识是专门记号 重载运算符表示重载哪一个运算符 School of Information and Engineering, Shenzhen University * 操作符重载定义形式 函数类型 operator 运算符(参数表) {函数体} 函数类型 类作用域::operator 运算符(参数表) {函数体} School of Information and Engineering, Shenzhen University * 重载运算符函数作为类成员函数时 关于参数个数的讨论 重载一元运算符,不再显式指明参数;重载二元运算符时,只需显式指明一个参数;参数个数总是比实际参数个数少一个。 编译程序处理成员函数时,为它设置了一个this指针。在重载运算符函数中,默认this指针对应的缺省参数就是其中之一个参数,对于一元运算符函数使用的就是规定的this指针所指的参数(自身的参数),对于二元运算符对应是二元运算的左操作数。 School of Information and Engineering, Shenzhen University * 例 复数的+和-重载 复数类中重载“+”的函数体中: temp.real=real+other.real; temp.image=image+other.image; 相当于: temp.real=this→real+other.real; temp.image=this→image+other.image; 重载二元运算符时必须特别注意两个操作数的左右位置,特别是重载减法运算符: COMPLEX COMPLEX::operator -(const COMPLEX other) { ??????? COMPLEX temp;   temp.real=real-other.real;? //相当于this→real-other.real   temp.image=image-other.image; //相当于this→image-other.image   return temp; } School of Information and Engineering, Shenzhen University * 重载赋值运算符“=” COMPLEX COMPLEX::operator =(const COMPLEX other)  {   real=other.real; //相当于this.real=other.real   image=other.image; //相当于this.image=other.image   return *this;  } 声明一个对象时作初始化也采用运算符“=”,但此时采用的是拷贝构造函数而不是调用重载赋值运算符。 School of Information and Engineering, Shenzhen University * 重载下标运算符“[ ]” 下标运算符“[ ]”用来数某个向量的某个元素,或直接对向量中某个元素赋值,它被视为一个二元运算符。 下标运算符只能作类成员运算符进行重载,不可作为友元运算符。 School of Information and Engineering, Shenzhen University * #includeiostream.h #includestdlib.h const int MAX_SIZE=10; class VECTOR{ public: VECTOR()     //构造函数 { int loop; for(loop=0;loop=MAX_SIZE-1; loop=loop+1) ???????????? table[loop]=loop; ?} int operator[ ](int index) //取向量元素{ if((index0)||(indexMAX_SIZE-1)) { cout”Index out of bounds.\n”; ???????exit(1); ?????????} return table[index]; ????} protected: ???????int tabl

文档评论(0)

挑战不可能 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档