美文网首页
操作符重载(Operator Overloading)

操作符重载(Operator Overloading)

作者: 吃柠檬的鸮 | 来源:发表于2019-05-15 23:29 被阅读0次

    一个类可以定义诸如 +/ 等操作符,使其可以像内建类型一样直接使用。

    优点:重载操作符可以使代码更加直观,像内建类型如 int 那样。

    缺点:

    1. 混淆直觉,很多操作并不像内建操作那样轻巧;
    2. 查找重载操作符的调用处更加困难,查找 Equal() 显然比同等调用 == 容易得多;
    3. 有的操作符可以对指针进行操作,容易导致 bug;
    4. 重载还有其他一些副作用,比如,重载操作符 & 的类不能被前置声明。

    结论:
    除少数特定环境外,不要重载操作符。如果需要的话,可以定义类似 Equals()CopyFrom() 等函数。

    一般不要重载操作符,有其是赋值操作符(operator=)比较阴险,应避免重载。

    极少数特定环境需要重载操作符以便与模板或 “ 标准 ” C++ 类衔接(如 operator<<(ostream&, const T&) ),如果被证明是正当的尚可接受,但还是要尽可能避免这样做。尤其是不要仅仅为了再 STL 容器中作为 key 使用就重载 operator==operator<,而应该再声明容器的时候,创建相等判断和大小比较的模仿类型。
    确实需要重载 operator== 时,最后提供文档说明原因。

    相关文章

      网友评论

          本文标题:操作符重载(Operator Overloading)

          本文链接:https://www.haomeiwen.com/subject/vkyvaqtx.html