C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt

C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt

ID:50041758

大小:943.00 KB

页数:13页

时间:2020-03-08

C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt_第1页
C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt_第2页
C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt_第3页
C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt_第4页
C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt_第5页
资源描述:

《C++程序设计大学教程 教学课件 王春玲 第9章 运算符重载.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、运算符重载第9章9.1运算符重载的概念在C++中,所有系统预定义的运算符都是通过运算符函数来实现的。a+boperator+(a,b)operator+(int,int)inta,b;2在用户自定义的新类中可以重载这些函数。在类中对运算符函数进行重载的方法:重载为类的成员函数重载为类的友元函数39.2重载为类的成员函数在类中定义一个同名的运算符函数来重载该函数。TYPEX::operator@(形参表){//函数体//重新定义运算符@在指定类X中的功能}4由于将运算符函数重载为类的成员函数,所以,操作的一方当然是当前对象:如

2、果重载单目运算符,就不必另设置参数;如果是重载双目运算符,就只要设置一个参数作为右侧运算量,而左侧运算量就是该对象本身。【例9-1】定义一个表示复数的类Complex,并在该类中对运算符“+”进行重载,以实现两个复数的加运算,要求将运算符重载为类的成员函数。59.3重载为类的友元函数定义一个与某一运算符函数同名的全局函数;然后再将该全局函数声明为类的友元函数,从而实现运算符的重载。friendTYPEoperator@(形参表);说明:(1)TYPE是该运算符函数的返回值类型。6(2)operator是关键字,@是需要被重载

3、的运算符,关键字operator与后面的运算符@共同组成了该运算符函数的函数名。(3)对于单目运算符,参数表中只包含一个参数;而对于双目运算符,参数表中包含两个参数。【例9-2】定义一个表示复数的类Complex,并在该类中对运算符“-”进行重载,以实现两个复数的减运算,要求将运算符重载为类的友元函数。79.4运算符重载的限制(1)在C++中,几乎所有系统预定义的运算符(除“.”、“*”、“::”、“?:”、sizeof外)都可以被重载。(2)运算符的重载既不会改变原运算符的优先级和结合性,也不会改变使用运算符的语法和参数个

4、数。(3)运算符函数operator@()通常被声明为类的成员函数或友元函数。其等价的函数调用形式如下表所示。8(4)当重载为类的成员函数时,运算符重载函数的形参个数要比运算符操作数个数少一个;若重载为友元函数,则参数个数与操作数个数相同。(5)“=”、“()”、“[]”和“->”等运算符不能用友元函数方式重载。99.5典型运算符的重载9.5.1赋值运算符的重载默认的重载赋值运算符的功能是逐个拷贝一个对象的所有数据成员到另外一个对象。这种赋值方式当对象中包含动态分配内存空间的情况有可能出错,因为类的数据成员中包含指针,简单的

5、赋值操作会使得两个对象中的指针成员指向同一个空间,运行时会发生错误,这时则需要用户自己定义重载的赋值运算符。【例9-3】创建一个字符串类String,并重载赋值运算符“=”,实现字符串之间的赋值运算。109.5.2单目运算符的重载单目运算符可以作为类的成员函数重载,也可以作为类的友元函数重载;作为成员函数重载是没有参数,而作为友元函数重载时有一个参数。【例9-4】创建一个字符串类String,并重载运算符“!”为其成员函数,用于判断对象中的字符串是否为空。11两种方式调用该函数表达式,如!string1通过对象调用其成员函数

6、,如string2.operator!()还可以将单目运算符重载为类的友元函数,这时需要重载函数有一个参数。【例9-5】创建一个字符串类String,并重载运算符“!”为其友元函数,用于判断对象中的字符串是否为空。129.5.3I/O运算符的重载C++的I/O流库的一个重要特性就是能够支持新的数据类型的输入和输出。用户可以通过对提取运算符“>>”和插入运算符“<<”进行重载,来实现对新的数据类型的数据的输入和输出操作。【例9-6】提取运算符“>>”和插入运算符“<<”重载示例。13

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。