3

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

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

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

4

1 回答 1

9

来自 C++ 草案:

13.5.5 下标 [over.sub]

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

后缀表达式 [ 表达式 ]

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


我在规范中找不到明确的,但我假设原因是因为它应该返回一个左值。

从头开始:这没有意义。它返回下标类型而不是对象类型的左值。

于 2013-06-20T10:04:57.660 回答