1.2.2 运算符重载的特点
运算符重载有不同于函数重载的以下特点。
(1)使用operator关键字对重载函数进行标识和定义。运算符有3种形式,即中缀、后缀、前缀,它们的operator表示形式如表1-1所示。
表1-1 3种运算符的 operator表示形式
|
运算符分类< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
常 规 表 示 |
operator表示形式 |
参 数 个 数 |
|
中缀 |
a+b |
operator +(a,b) |
二元 |
|
前缀 |
-a |
operator-(a,0) |
一元 |
|
后缀 |
a++ |
operator ++(a) |
一元 |
(2)只能重载C++(www.cppentry.com)提供的标准运算符。可重载的运算符在表1-2中列出。
表1-2 可重载的C++(www.cppentry.com)运算符
|
+ - * / % ^ & | ~ !
= <> += -= *= /= %= ^= &= |=
<< >> <<= >>= == = <= >= && ||
++ - {} () -> , new new[] delete
elete[] 类型转换运算符 |
注:类型转换运算符包括int、char、long、float、int*、char*等。
(3)参数个数固定。重载函数的参数个数与标准运算符保持一致。即对于一元运算符(前缀和后缀形式),重载函数有且只能有一个参数;对于二元运算符(中缀形式),重载函数有且只能有两个参数。
(4)针对类对象进行操作。即重载函数的参数至少有一个属于class类型。
示例1.5是重载“+”运算符的示例。
示例清单1.5
#include "stdio.h" class CAdd { public: CAdd() { m_Operand=0; } CAdd(int value) { m_Operand=value; } public: int m_Operand; }; //重载“+”运算符,操作CAdd类 //第一个参数类型是CAdd, 返回类型是CAdd CAdd operator +(CAdd a, int b) { CAdd sum; sum.m_Operand=a. m_Operand +b; return sum; } int main(int argc, char* argv[]) { CAdd a(5),b; b=a+8; printf("sum is %d\n",b.m_Operand);
return 0; } |
程序输出结果:
【责任编辑:
夏书 TEL:(010)68476606】