C++主题——重载操作符 1. 重载操作符后,操作符的含义不应该被改变。 2. 重载操作符后,优先级和结合性不变。 3. 重载操作符,应注意如果原操作符是一目操作符,那么重载后仍应该是一目的,以此类推,特别注意:冲在操作符时使用默认实参是非法的。 4. 短路操作符被重载后不再具备短路性。 5. 对于选择友元、成员、非成员的形式,需要在重载前衡量习惯、效率等问题。 6. 重载operator + 和 operator +=时,若将其作为成员形式重载,那么返回类型为T&类型、返回值为*this比较好,可以做连续加法,也可提高效率。 7. 默认情况下,对于类对象,复制操作符表示按位copy,取地址操作符返回对象的值,逗号操作符返回最右边的操作数的值。 8. 逻辑判断操作符在容器中应用比较广,所以如果想将类型放在容器中,又进行类似sort等需要判断逻辑大小关心的操作,应该重载大/小操作符。 9. 对于重载<<操作符有比较一致的要求: 11. 算术操作符通常产生一个新值,该值是两个参数的计算结果,它不同于任意一个参数。当我们定义了一个符合运算符,又定义了一个算术操作符,则可以通过符合操作符实现算术操作符。 12. 如果定义了相等操作符,那么它应该同时定义不等操作符。同时,应让一个操作符完成比较对象的实际操作,而另一个调用它。 13. 下标操作符必须为成员函数,而且为确保它在作用到赋值操作的左右两边时都表现正常,应该定义const和非const版本的下标操作符,他们都返回引用。 14. 箭头操作符必须被定义为成员形式。它看起来像二元操作符,但是注意他是一元的,不接受实参。返回值必须是指向类类型的指针。这时会有递归调用箭头操作符的情况,应避免。 15. 解引用可定义为成员形式。同时重载const和非const形式。 16. 自增自减操作符定义成成员形式,前缀型无参数,后缀型有参数int。返回值为对象的引用。前缀形式返回新值,后缀形式返回旧值。需显示调用后缀形式。 |
|