2013-06-20 44 views
3

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

我读的书 “经营者必须是成员函数”

“C++程序设计语言特别版” 页面287

+1

是的,因为它应该访问班级的私人成员。 – Morwenn

+0

@Morwenn:这应该是答案:) – slaphappy

+0

你应该从堆栈溢出阅读这篇文章,这是非常有趣的:http://stackoverflow.com/questions/4421706/operator-overloading/4421719#4421719 – ChristopheLec

回答

9

从C++草案:

13.5.5预订[over.sub]

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

后缀表达式[表达式]

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


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

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

相关问题