代码之家  ›  专栏  ›  技术社区  ›  Qian Chen

cpp运算符重载操作数位置[]vs==

  •  0
  • Qian Chen  · 技术社区  · 6 年前

    char& operator[] 不同于 bool operator== ? 一种是把操作数放在中间 [] == . 它怎么知道把操作数放在哪里?开括号和闭括号有什么特别的技巧吗?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Community CDub    4 年前

    它怎么知道把操作数放在哪里?

    §11.5.5 Subscripting [over.sub]/1 :

    operator[]

    后缀表达式 [ ]

    x[y] x.operator[](y) 对于类对象 x 类型 T 如果 T​::​operator[](T1) 存在,并且重载解析机制([over.match.best])将运算符选为最佳匹配函数。