重载的运算符(有些例外情况)不必是成员函数,但必须至少有一个操作数是用户定义的类型。
C++对用户定义的运算符重载的限制:
- 重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符。
- 使用运算符不能违反运算符原来的句法规则。即加法运算不能只有一个操作数等。同样不能改变运算符的优先级。
- 不能创建新运算符
- 不能重载以下运算符
. : 成员运算符
.* : 成员指针运算符
:: : 作用域解析运算符
?: : 条件运算符
typeid : 一个RTTI运算符
const_cast : 强制类型转换运算符
dynamic_cast :强制类型转换运算符
reinterpret_cast :强制类型转换运算符
static_cast :强制类型转换运算符
- 下面的运算符只能通过成员函数进行重载
= :赋值运算符
() :函数调用运算符
[] :下标运算符
-> : 通过指针访问类成员运算符