运算符重载
运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义,也允许将运算符重载扩展到用户定义的类型。
运算符函数:operatorop (argument-list)。
使用重载运算符时,可以视为使用相应的运算符函数替换运算符。
计算时间:一个运算符重载示例
调用operator+ ( )方法可以有两种方式,一种是运算符函数表示法,一种是运算符表示法。在运算符表示法中,运算符左侧的对象是调用对象,运算符右侧的对象是作为参数被传递的对象。
重载限制
- 重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符
- 使用运算符时不能违反运算符原来的句法规则,也不能修改运算符的优先级
- 不能创建新运算符
- 不能重载下面的运算符
sizeof | sizeof运算符 |
. | 成员运算符 |
.* | 成员指针运算符 |
:: | 作用域解析运算符 |
?: | 条件运算符 |
typeid | 一个RTTI运算符 |
const_cast | 强制类型转换运算符 |
dynamic_cast | 强制类型转换运算符 |
reinterpret_cast | 强制类型转换运算符 |
static_cast | 强制类型转换运算符 |
- 下面的运算符只能通过成员函数进行重载
= | 赋值运算符 |
() | 函数调用运算符 |
[] | 下标运算符 |
-> | 通过指针访问类成员的运算符 |