运算符重载使得用户自定义数据以一种更简洁方式工作.ppt

运算符重载使得用户自定义数据以一种更简洁方式工作.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#includeiostream.h #includestring.h class Name { public : Name ( char *pN ) ; Name( const Name ) ; //复制构造函数 Name operator=( const Name ) ; // 重载赋值算符 ~ Name() ; protected : char *pName ; int size ; } ; void main() { Name Obj1( ZhangSan ) ; Name Obj2 = Obj1 ; // 调用复制构造函数 Name Obj3( NoName ) ; Obj3 = Obj2 = Obj1 ; // 调用重载赋值算符函数 } 析构赋值操作后的对象 6.3.2 重载赋值运算符 例6-6 定义Name类的重载赋值函数 6.3.3 重载运算符[]和() 运算符 [] 和 () 是二元运算符 [] 和 () 只能用成员函数重载,不能用友元函数重载 6.3.3 重载运算符[]和() 1.重载下标算符 [] 重载格式 类 :: 类型 operator[] ( 类型 ) ; [] 运算符用于访问数据对象的元素 6.3.3 重载运算符[]和() 1.重载下标算符 [] 重载格式 类 :: 类型 operator[] ( 类型 ) ; [] 运算符用于访问数据对象的元素 定义重载函数的类名 6.3.3 重载运算符[]和() 1.重载下标算符 [] 重载格式 类 :: 类型 operator[] [ 类型 ] ; [] 运算符用于访问数据对象的元素 函数返回类型 6.3.3 重载运算符[]和() 1.重载下标算符 [] 重载格式 类 :: 类型 operator[] ( 类型 ) ; [] 运算符用于访问数据对象的元素 函数名 6.3.3 重载运算符[]和() 1.重载下标算符 [] 重载格式 类 :: 类型 operator[] ( 类型 ) ; [] 运算符用于访问数据对象的元素 右操作数 为符合原语义,用 int 6.3.3 重载运算符[]和() 1.重载下标算符 [] 重载格式 类 :: 类型 operator() [ 类型 ] ; [] 运算符用于访问数据对象的元素 例 设 x 是类 X 的一个对象,则表达式 x [ y ] 可被解释为 x . operator [ ] ( y ) 显式声明一个参数 6.3.3 重载运算符[]和() 使用友员重载算符的讨论 用友员函数重载像“++”这样的运算符时,有时会碰到问题。 例如,类 TriCoor 用成员函数重载“+ +”的版本是: TriCoor :: TriCoor operator ++ () { x ++ ; y ++ ; z ++ ; return *this ; } // ok , 修改了this 指针所指对象 用成员函数重载一元算符时,所需要的唯一变元通过 this 指针传递, 对 this 所指对象数据的任何改变都会影响到激活运算符函数的对象 6.2.2 用友员函数重载算符 使用友员重载算符的讨论 1. 若定义友员函数 friend operator ++( ) 版本: TriCoor operator ++ (TriCoor opl ) { opl . x ++ ; opl . y ++ ; opl . z ++ ; return opl ; } 问题 函数使用传值参数,对 opl 的所有修改都无法传到函数体外,不会影响被调用的对象 6.2.2 用友员函数重载算符 使用友员重载算符的讨论 2. 用指向激活对象的指针定义友员函数: TriCoor operator ++ ( TriCoor * opl ) { opl - x ++ ; opl - y ++ ; opl - z ++ ; return *opl ; } 问题 C++ 不知道如何激活该函数,下述代码无法编译: TriCoor ob ( 1 , 2 , 3 ) ; ob ++ ; // error 二义性 对 ob 的地址进行递加? 还是 将对象 ob 递加? 6.2.2 用友员函数重载算符 使用友员重载算符的讨论 3. 使用引用参数: TriCoor operator ++ ( TriCoor opl ) { opl . x ++

文档评论(0)

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

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

1亿VIP精品文档

相关文档