运算符重载是一种形式的 C++ 多态。
一、重载限制
重载后的运算符必须至少有一个操作数是用户定义的类型。
使用运算符时不能违反运算符原来的句法规则。
不能创建新的运算符。
二、不能重载的运算符
名称 | 说明 |
---|---|
sizeof | sizeof 运算符 |
. | 成员运算符 |
.* | 成员指针运算符 |
:: | 作用域解析运算符 |
?: | 条件运算符 |
typeid | 一个 RTTI 运算符 |
const_cast | 强制类型转换运算符 |
dynamic_cast | 强制类型转换运算符 |
reinterpret_cast | 强制类型转换运算符 |
static_cast | 强制类型转换运算符 |
三、只能成员函数重载
名称 | 说明 |
---|---|
= | 赋值运算符 |
() | 函数调用运算符 |
[] | 下标运算符 |
-> | 作用域解析运算符 |
四、可重载的运算符
+ | - | * | / | % | ^ |
& | | | ~= | ! | = | < |
> | += | -= | *= | /= | %= |
^= | &= | |= | << | >> | >>= |
<<= | == | != | <= | >= | && |
|| | ++ | – | , | ->* | -> |
() | [] | new | delete | new[] | delete[] |