在C ++中,operator []()
必须始终是成员函数吗?如果是,为什么?
我在书中读到“运算符必须是成员函数”
“C ++编程语言特别版”第287页。
答案 0 :(得分:9)
来自C ++草案:
13.5.5订阅[over.sub]
operator []应该是一个非静态成员函数,只有一个参数。它实现了下标语法
postfix-expression [表达式]
因此,如果T :: operator存在,并且如果运算符被重载决策机制选为最佳匹配函数,则下标表达式x [y]被解释为类型为T的类对象x的x.operator(13.3) 0.3)。
我在规范中找不到它,但我假设原因是因为它预计会返回一个左值。
抓一点:它没有意义。它返回下标类型的左值而不是对象类型。