Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 C++ 中,必须operator []()始终是成员函数吗?如果是,为什么?
operator []()
我在书中读到“运算符必须是成员函数”
“C++ 编程语言特别版”第 287 页。
来自 C++ 草案:
13.5.5 下标 [over.sub] operator[] 应该是一个只有一个参数的非静态成员函数。它实现了下标语法 后缀表达式 [ 表达式 ] 因此,下标表达式 x[y] 被解释为类型 T 的类对象 x 的 x.operator 如果 T::operator 存在并且如果运算符被重载决策机制选择为最佳匹配函数 (13.3.3) .
13.5.5 下标 [over.sub]
operator[] 应该是一个只有一个参数的非静态成员函数。它实现了下标语法
后缀表达式 [ 表达式 ]
因此,下标表达式 x[y] 被解释为类型 T 的类对象 x 的 x.operator 如果 T::operator 存在并且如果运算符被重载决策机制选择为最佳匹配函数 (13.3.3) .
我在规范中找不到明确的,但我假设原因是因为它应该返回一个左值。
从头开始:这没有意义。它返回下标类型而不是对象类型的左值。