C++运算符重载是指为用户自定义的类型赋予运算符特殊的含义,使得运算符可以根据操作数的类型执行不同的操作。例如,您可以重载+
运算符,使得它可以用于连接字符串或者相加复数。
C++运算符重载的基本语法是:
返回值 operator 运算符 (参数列表)
其中,operator
是关键字,运算符
是要重载的运算符符号,参数列表
是运算符的操作数。返回值和参数列表可以根据运算符的性质和需求进行设计。
C++运算符重载有两种实现方式:使用成员函数或者使用友元函数。使用成员函数时,重载运算符的第一个操作数必须是调用该函数的对象,而使用友元函数时,可以自由指定操作数的类型和个数。
C++中有一些运算符是可以重载的,有一些是不可以重载的。下面是一个可重载运算符的列表:
运算符类型 | 包括的运算符 |
---|---|
双目算术运算符 | + (加),- (减),* (乘),/ (除),% (取模) |
关系运算符 | == (等于),!= (不等于),< (小于),> (大于),<= (小于等于),>= (大于等于) |
逻辑运算符 | ` |
单目运算符 | + (正),- (负),* (指针),& (取地址) |
自增自减运算符 | ++ (自增), -- (自减) |
赋值运算符 | = , += , -= , *= , /= , %= , &= , ` |
空间申请与释放 | new , delete , new [] , delete [] |
其他运算符 | () (函数调用), -> (成员访问), , (逗号), [] (下标) |
下面是一个不可重载运算符的列表:
. :成员访问运算符
.*, ->* :成员指针访问运算符
:: :域运算符
sizeof :长度运算符
?: :条件运算符
# : 预处理符号