为什么operator []必须是非静态成员函数?

时间:2016-03-04 06:25:01

标签: c++

C ++标准说" =" ,"()" ," []"应该是非静态成员函数。

为什么以这种方式指定? 为什么我们需要以这种方式定义标准?

1 个答案:

答案 0 :(得分:1)

我不知道标准委员会在想什么,但如果他们不在对象本身上运行,那么这些运算符并没有多大用处。

如果operator()operator[]可以使用“任何内容”,也会遇到麻烦,因为它们也会用于传统代码中。如果你不需要一个对象来操作[并因此选择正确的操作符],那么弄清楚要使用哪个operator[]会很麻烦。

operator=更是如此:如果不是对象,你指定的是什么?除了一个物体之外,对它做任何事都没有意义。