在C ++中,运算符[]()必须是成员函数吗?

时间:2013-06-20 09:58:32

标签: c++ operator-overloading

在C ++中,operator []()必须始终是成员函数吗?如果是,为什么?

我在书中读到“运算符必须是成员函数”

“C ++编程语言特别版”第287页。

1 个答案:

答案 0 :(得分:9)

来自C ++草案:

  

13.5.5订阅[over.sub]

     

operator []应该是一个非静态成员函数,只有一个参数。它实现了下标语法

     
    

postfix-expression [表达式]

  
     

因此,如果T :: operator存在,并且如果运算符被重载决策机制选为最佳匹配函数,则下标表达式x [y]被解释为类型为T的类对象x的x.operator(13.3) 0.3)。


我在规范中找不到它,但我假设原因是因为它预计会返回一个左值。

抓一点:它没有意义。它返回下标类型的左值而不是对象类型。