3
在C++中,必须operator []()
始终是成员函数吗?如果是,为什么?在C++中,必须operator []()是成员函数吗?
我读的书 “经营者必须是成员函数”
“C++程序设计语言特别版” 页面287
在C++中,必须operator []()
始终是成员函数吗?如果是,为什么?在C++中,必须operator []()是成员函数吗?
我读的书 “经营者必须是成员函数”
“C++程序设计语言特别版” 页面287
从C++草案:
13.5.5预订[over.sub]
operator []应该是一个只有一个参数的非静态成员函数。它实现了下标语法
后缀表达式[表达式]
因此,下标表达式x [Y]被解释为对x.operator T类型的类对象x如果T ::运算符存在,并且如果运算符被重载解析机制(13.3.3)选为最佳匹配函数。
我找不到它在规范中明确的,但我假设的原因是因为它的预期返回左值。
划痕:它没有意义。它返回下标类型的左值而不是对象类型。
是的,因为它应该访问班级的私人成员。 – Morwenn
@Morwenn:这应该是答案:) – slaphappy
你应该从堆栈溢出阅读这篇文章,这是非常有趣的:http://stackoverflow.com/questions/4421706/operator-overloading/4421719#4421719 – ChristopheLec