C++程序设计 湖南大学 杜四春、银红霞 第9章运算符重载 9.1运算符重载概述9,7下标运算符重载 92运算符重载的实现9.8运算符new与dete重载 94双日运算符重载99逗号运算符重载 9.5->运算符重载9.10类型转换运算符重载 9.6赋值运篁符重载9,11运算符重载应用实例
C++程序设计 湖南大学 杜四春、银红霞 第9章 运算符重载 9.1 运算符重载概述 9.2 运算符重载的实现 9.3 单目运算符重载 9.4 双目运算符重载 9.5 ->运算符重载 9.6 赋值运算符重载 9.7 下标运算符重载 9.8 运算符new与delete重载 9.9 逗号运算符重载 9.10 类型转换运算符重载 9.11 运算符重载应用实例
C++程序设计 湖南大学 杜四春、银红霞 C++语言允许程序员重新定义已有的运算 符,使其能按用户的要求完成一些特定的操作, 这就是所谓的运算符重载。运算符重载与函数 重载相似,其目的是设置某一运算符,让它具 有另一种功能,尽管此运算符在原先C++语言 中代表另一种含义,但他们彼此之间并不冲突 C++会根据运算符的位置辨别应使用哪一种功 能进行运算
C++程序设计 湖南大学 杜四春、银红霞 C++语言允许程序员重新定义已有的运算 符,使其能按用户的要求完成一些特定的操作, 这就是所谓的运算符重载。运算符重载与函数 重载相似,其目的是设置某一运算符,让它具 有另一种功能,尽管此运算符在原先C++语言 中代表另一种含义,但他们彼此之间并不冲突。 C++会根据运算符的位置辨别应使用哪一种功 能进行运算
C++程序设计 湖南大学 杜四春、银红霞 9.1运算符重载概述 运算符重载是对已有的运算符赋予多重含义,同 个运算符作用于不同类型的数据导致不同类型的行 为。C++中预定义的运算符的操作对象只能是基本数 据类型,实际上,对于很多用户自定义类型,也需要 有类似的运算操作,这就提出了对运算符进行重新定 义,赋予已有符号以新功能的要求。 运算符重载的实质就是函数重载。在实现过程中, 首先把指定的运算表达式转化为对运算符函数的调用, 运算对象转化为运算符函数的实参,然后根据实参的 类型来确定需要调用的函数,这个过程是在编译过程 中完成的 C++可以重载的运算符如表9-1所示; C++不能被重载的运算符如表9-2所示
C++程序设计 湖南大学 杜四春、银红霞 9.1 运算符重载概述 运算符重载是对已有的运算符赋予多重含义,同 一个运算符作用于不同类型的数据导致不同类型的行 为。C++中预定义的运算符的操作对象只能是基本数 据类型,实际上,对于很多用户自定义类型,也需要 有类似的运算操作,这就提出了对运算符进行重新定 义,赋予已有符号以新功能的要求。 运算符重载的实质就是函数重载。在实现过程中, 首先把指定的运算表达式转化为对运算符函数的调用, 运算对象转化为运算符函数的实参,然后根据实参的 类型来确定需要调用的函数,这个过程是在编译过程 中完成的。 C++可以重载的运算符如表9-1所示 ; C++不能被重载的运算符如表9-2所示
C++程序设计 湖南大学 杜四春、银红霞 运算符重载的规则如下: (1)C++中的运算符除了少数几个以外,全部可 以重载,而且只能重载已有的这些运算符 (2)重载之后运算符的优先级和结合性都不会改 变。 (3)运算符重载是针对新类型数据的实际需要, 对原有运算符进行适当的改造。一般来讲,重载的功 能应当与原有功能相类似,不能改变原运算符的操作 对象个数,同时至少要有一个操作对象是自定义类型
C++程序设计 湖南大学 杜四春、银红霞 运算符重载的规则如下: (1)C++中的运算符除了少数几个以外,全部可 以重载,而且只能重载已有的这些运算符。 (2)重载之后运算符的优先级和结合性都不会改 变。 (3)运算符重载是针对新类型数据的实际需要, 对原有运算符进行适当的改造。一般来讲,重载的功 能应当与原有功能相类似,不能改变原运算符的操作 对象个数,同时至少要有一个操作对象是自定义类型
C++程序设计 湖南大学 杜四春、银红霞 9.2运算符重载的实现 运算符的重载形式有两种:重载为类的成员函数 和重载为类的友元函数。 运算符重载为类的成员函数的语法形式如下: <函数类型> operator<运算符>(<形参表>) <函数体>; friend<函数类型> operator<运算符>(<形参表>) <函数体>;
C++程序设计 湖南大学 杜四春、银红霞 9.2 运算符重载的实现 运算符的重载形式有两种:重载为类的成员函数 和重载为类的友元函数。 运算符重载为类的成员函数的语法形式如下: <函数类型> operator <运算符>(<形参表>) { <函数体>; } friend <函数类型> operator <运算符>(<形参表>) { <函数体>; }