1: 重载操作符 必须至少一个类类型或枚举类型的操作数,这条规则强制重载操作符不能重定义用于内置类型对象的操作符的含义。
2: 重载操作符时使用默认是非法的。
3: 编译器自己定义的操作符:
(1): 合成赋值操作符,进行逐个成员赋值(连同基类一起赋值)
(2): 取地址操作符(&) , 逗号操作符(,). 逗号操作符从左至右计算每个表达式的值,关返回最右 边的值.
(3): 内置逻辑与(&) 、逻辑或(||) 操作符使用短路求值,如果重新定义该操作符将失去短路求值, 的特性.
短路求值: 逻辑与和逻辑或操作符总是先计算左边的操作数,然后在右边。只有在仅靠左边操作数 的值无法判断时,才会去执行右边的.
4: 赋值操作符可以重载.无论形参为何种类型,赋值操作符必须定义为 成员函数 . 这点与复合赋值操作符不同.(一般而言,赋值操作符和复合赋值操作符应反回 左操作数的引用)
5: 下标操作符 必须定义为成员函数
6: 箭头操作符必须定义为成员函数。
7: 最佳实践: 为了与内置类型一致,前缀式操作符应返回被增量或减量对象的引用.
8: 最佳实践: 为了与内置类型一致,后缀式操作符应返回旧值,并且,应作为值返回,而不是返回引用.
--------------------前缀重载------------
T& T::operator++() 前缀
T& T::operator--() 前缀
--------------------后缀重载------------
T T::operator++(int)
T T::operator--(int)