zoukankan      html  css  js  c++  java
  • C++中运算符重载需要注意什么?

    c++ - Operator overloading - Stack Overflow这篇FAQ讲的很清楚,把要点整理如下:

    C++中operator重载的基本语意:

    1. 只能重载用户定义类型的operator。
    2. 以下operator不能重载:.,::,sizeof,?:
    3. 其余的都能重载,分别是:
      1. 算数运算符:二元:+ - * / %  += -= *= /= %=,一元:+ - ++ --
      2. 位运算符:二元 & | ^ << >> and &= |= ^= <<= >>= ;一元 ~
      3. 布尔运算符:二元:== != < > <= >= || &&, 一元!
      4. 地址管理:new new[] delete delete[]
      5. 显示转换运算符
      6. 其它:二元:= [] ->,一元:* &,函数调用: ()

    三个基本原则:

    1. 如果operator的含义模糊不清,就不要重载,用一个函数名清楚的函数替代
    2. 永远坚持operator众所周知的语意
    3. 永远提供相关的运算符重载,比如重载了+,就要重载+=

    运算符实现成员还是非成员

    1. 赋值运算符=,数组下标运算符[],成员访问运算符->和函数调用运算符()必须是成员内的。
    2. 如果需要修改左操作数,通常实现在非成员,比如<<和>>。
    3. 对于别的,遵守下面的规则:
      1. 如果是一元运算符,成员
      2. 如果二元运算符,左右操作数对等,非成员
      3. 如果二元运算符,左右操作数不对等,成员
  • 相关阅读:
    目标检测中roi的有关操作
    JavaScript高级程序设计读后感(一)
    手机app后台初学
    DTO数据传输对象
    数据库设计系列之四--ER图
    数据库设计系列之三
    数据库设计系列之二
    数据库设计系列之一
    Linux命令大全
    Linux登录密码修改
  • 原文地址:https://www.cnblogs.com/fresky/p/2804026.html
Copyright © 2011-2022 走看看