C++运算符重载的实质:
运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。运算符相当于一种函数。运算符重载的形式是:
1 | <返回类型> operator<运算符>(<参数列表>) |
运算符重载的规则:
重载后的运算符必须至少有一个操作数是用户定义的类型。
使用运算符不能违反运算符原来的句法法则
不能创建新的运算符。
并不是所有的运算符都可以重载,C++中不能重载的运算符有以下几种:
域解析符(::);
成员访问符(.);
成员指针访问符(.*);
三元条件运算符 (? :);
sizeof 运算符和typeid运算符。
const_cast: 强制类型转换符;
dynamic_cast: 强制类型转换符;
reinterpret_cas:强制类型转换符;
static_cast : 强制类型转换符。
其余的运算符对于C++都是可以重载的。但是以下几种运算符只能被作为成员函数重载即:
= :赋值运算符
() : 函数调用运算符
[] : 下标运算符
->: 指针访问运算符
其余的与运算符可以通过成员或者非成员函数进行重载。
示例代码:
Complex.h
1 |
|
Complex.cpp:
1 |
|
main.cpp:
1 |
|