下载此文档

运算符重载.ppt


文档分类:IT计算机 | 页数:约37页 举报非法文档有奖
1/37
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/37 下载此文档
文档列表 文档介绍
§ 重载运算符
第十八章目录
§ 其它运算符的重载举例
§ 运算符重载的语法形式
第十八章小结
重载运算符是C++ 的一个重要特性,使用运算符重载,程序员可以把C++ 运算符的定义扩展到运算分量是对象的情况。
运算符重载的目的是使C++ 代码更直观,更易读。
由简单的运算符构成的表达式常常比函数调用更简洁、易懂。
本章重点介绍如何定义和使用与类有关的运算符。
第十八章运算符重载(Operator Overloading)
Like most languages, C++ supports a set of operators for its built-in types.
However, most concepts for which operators are conventionally used are not built-in types in C++, so type must be represented as user-defined types.
For example, if you plex arithmetic, matrix algebra, logic signals, or character strings in C++, you use classes to represent these notions.
Defining operators for such classes sometimes allows a programmer to provide a more conventional and convenient notation for manipulating objects than could be achieved using only the basic functional notation.
§ 重载运算符
在基本数据类型上,系统提供了许多预定义的运算符。
例如: int x,y;
y=x+y;
对基本类型,这些运算符的操作具有特定的含义。
如果string 类的两个对象x 和y串要合并,以构成一个新字符串,即:
string x,y;
那么,可以使用函数strcat(x,y)实现两个串的合并。
如果在表示字符串的类对象x,y 的特定环境下,运算符“+”使用于类对象,能被解释为串对象x 和y 的合并,则编程就更方便了。
于是:
string x,y;
x=x+y; //表示串x 和串y 合并,放入串x
这就使对基本类型的预定义运算符“+”的含义在串类中被扩展为对串类对象的合并操作,即运算符“+”被重载。
运算符重载应注意的几个问题:
1、哪些运算符可以重载?
在C++ 中除了下面四种运算符外,系统预定义的运算符都能被重载。
::(Scope resolution);
. (Member selection);
->(Member selection through pointer to member);
?:(Conditional expression).
2、运算符重载要保持原运算符的下述特性不变:
优先级和结合性不变;
操作数个数不变;
语法结构不变。
3、运算符重载实际上是通过定义一个函数来实现的。运算符重载归根结底是函数的重载。编译器选择重载的运算符是遵循函数重载的选择原则,即按不同类型或个数的参数来选择不同的重载运算符。
4、运算符重载应符合使用****惯,便于理解。如果在字符串类中把“*”运算符重载为两个对象的合并操作,就不如把“+”运算符重载,更易于理解。
5、运算符重载不能创造新的运算符号。例如,不能创造一个新运算符号“**”,表示幂运算。
在C++中,运算符重载是通过运算符重载函数实现的,运算符重载函数一般采用下述两种形式之一。
成员函数的形式;
友元函数的形式。
1、运算符重载的成员函数形式
它是一种特殊的成员函数,其语法形式为:
type X::operator@(参数表)
{
//相对于该类而定义的操作(运算符重载函数体)
}
§ 运算符重载的语法形式
其中,type 为函数的返回类型;
@是泛指要重载的运算符号;
X是重载该运算符的类的类名;
operator 为关键字;
operator@为函数名。
参数表列出该运算符需要的操作数。单目运算参数表中无参数,调用该函数的对象为操作数。双目运算参数表中有一个参数,调用该函数的对象为第一操作数,参数表中的参数为第二操作数。
运算符函数体对重载的运算符的含义作出新的解释。这种解释仅局限在重载该运算符的类中,即当

运算符重载 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数37
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yunde113
  • 文件大小0 KB
  • 时间2014-08-05