欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

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

    • 资源ID:2709765       资源大小:1.27MB        全文页数:141页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    运算符重载使得用户自定义的数据以一种更简洁的方式工作,例如 int x , y ; y = x + y ;,matrix m1 , m2 ; / 矩阵类对象 m2 = Madd ( m1 , m2 ) ; / 调用函数计算两个矩阵的和,complex c1 , c2 ; / 复数类对象 c1 = Cadd (c1 , c2 ) ; / 调用函数计算两个复数的和,能表示为 c1 = c1 + c2 ; ?,能表示为 m1 = m1 + m2 ; ?,第6章 运算符重载,定义 运算符重载函数,第6章 运算符重载,6.1 运算符重载规则,6.2 用成员或友员函数重载运算符,6.3 几个典型运算符重载,6.4 类类型转换,小结,6.1 运算符重载规则,6.1.1 重载运算符的限制,可以重载的运算符 + - * / % & | ! = += -= *= /= % = &= |= = = && | + - -* - () new delete new delete,不能重载的算符 . : * ?: #,6.1 运算符重载规则,6.1.1 重载运算符的限制,重载运算符函数可以对运算符作出新的解释,但原有基本语义不变: 不改变运算符的优先级 不改变运算符的结合性 不改变运算符所需要的操作数 不能创建新的运算符,6.1.2 运算符重载的语法形式,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,6.1.2 运算符重载的语法形式,函数返回类型,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,6.1.2 运算符重载的语法形式,重载该运算符的类,6.1.2 运算符重载的语法形式,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,被重载的运算符,6.1.2 运算符重载的语法形式,关键字,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,6.1.2 运算符重载的语法形式,函数名,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,6.1.2 运算符重载的语法形式,运算符要求的操作数,6.1.2 运算符重载的语法形式,一个运算符被重载后,原有意义没有失去,只是定义了相对一特定类的一个新运算符,运算符函数是一种特殊的成员函数或友员函数 成员函数的语法形式为: 类型 类名 : operator op ( 参数表 ) / 相对于该类定义的操作 ,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,例6-1 设计一个安全计数器,6.1.2 运算符重载的语法形式,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,重载了 3个算符,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,重载了 3个算符,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,void Calculator : operator + () if ( value 65535 ) value + ; else cout “nData overflow !“ endl ; abort() ; ,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,void Calculator : operator + () if ( value 65535 ) value + ; else cout “nData overflow !“ endl ; abort() ; ,使用 系统预定义版本,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,void Calculator : operator - () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; ,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,void Calculator : operator - () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; ,使用 系统预定义版本,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,+ Counter;,调用重载版本,void operator + () ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,+ Counter;,void operator + () ;,调用重载版本,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,void operator + () ;,调用重载版本,Counter.operator+() ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,- Counter;,调用重载版本,void operator - () ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,- Counter;,调用重载版本,void operator - () ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,调用重载版本,void operator - () ;,Counter.operator-() ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,Counter () ;,调用重载版本,void operator () () ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,Counter () ;,void operator () () ;,被重载的运算符,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,Counter () ;,void operator () () ;,函数参数表,Counter. operator() () ;,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,#include #include class Calculator public: Calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; void main() Calculator Counter ; int i ; for( i = 0 ; i 5 ; i + ) + Counter; cout “n Counter = “ Counter() ; for( i = 0 ; i = 5 ; i + ) - Counter; cout “n Counter = “ Counter() ; ,void Calculator:operator + () if ( value 0 ) value - ; else cout “n Data overflow !“ endl ; abort() ; unsigned int Calculator:operator() () return value ; ,6.1.2 运算符重载的语法形式,例6-1 设计一个安全计数器,运算符函数可以重载为成员函数或友员函数 关键区别在于成员函数具有 this 指针,友员函数没有this指针 不管是成员函数还是友员函数重载,算符的使用方法相同。但 传递参数的方法不同,实现代码不同,应用场合也不同,6.2 用成员或友员函数重载运算符,重载为成员函数,解释为: Object . operator op () 操作数由对象Object通过this指针隐含传递 重载为友员函数,解释为: operator op (Object) 操作数由参数表的参数Object提供,6.2 用成员或友员函数重载运算符,1一元运算符,Object op 或 op Object,重载为成员函数,解释为: ObjectL . operator op ( ObjectR ) 左操作数由ObjectL通过this指针传递,右操作数由参数ObjectR传递 重载为友员函数,解释为: operator op ( ObjectL, ObjectR ) 左右操作数都由参数传递,6.2 用成员或友员函数重载运算符,2二元运算符,ObjectL op ObjectR,当一元运算符的操作数,或者二元运算符的左操作数 是该类的一个对象时,定义重载算符函数为成员函数,6.2.1 用成员函数重载算符,6.2.1 用成员函数重载算符,例6-2 建立一个描述3维坐标的类 Tri_Coordinates,重载算符 “+”、“+”、和 “=” ,实现简单的算术运算,6.2.1 用成员函数重载算符,6.2.1 用成员函数重载算符,#include class TriCoor public: TriCoor( int mx = 0, int my = 0, int mz = 0 ) x = mx ; y = my ; z = mz ; TriCoor operator + ( TriCoor t ) TriCoor temp ; temp.x = x+t.x ; temp.y = y+t.y ; temp.z = z+t.z ; return temp ; TriCoor operator = ( TriCoor t ) x = t.x ; y = t.y ; z = t.z ; return * this ; TriCoor operator + () x + ; y + ; z + ; return *this ; void show() cout x “ , “ y “ , “ z “n“; void assign( int mx, int my, int mz ) x = mx; y = my; z = mz; private: int x, y, z ; / 3_d coordinates ; void main() TriCoor a( 1, 2, 3 ), b, c ; a.show(); b.show(); c.show(); for( int i = 0; i 5; i + ) + b; b.show() ; c.assign( 3, 3, 3 ) ; c = a + b + c ; c.show() ; c = b = a ; c.show() ; ,6.2.1 用成员函数重载算符,例6-2,#include class TriCoor public: TriCoor( int mx = 0, int my = 0, int mz = 0 ) x = mx ; y = my ; z = mz ; TriCoor operator + ( TriCoor t ) TriCo

    注意事项

    本文(运算符重载使得用户自定义的数据以一种更简洁的方式工作.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开