C ++标准说" =" ,"()" ," []"应该是非静态成员函数。
为什么以这种方式指定? 为什么我们需要以这种方式定义标准?
答案 0 :(得分:1)
我不知道标准委员会在想什么,但如果他们不在对象本身上运行,那么这些运算符并没有多大用处。
如果operator()
或operator[]
可以使用“任何内容”,也会遇到麻烦,因为它们也会用于传统代码中。如果你不需要一个对象来操作[并因此选择正确的操作符],那么弄清楚要使用哪个operator[]
会很麻烦。
operator=
更是如此:如果不是对象,你指定的是什么?除了一个物体之外,对它做任何事都没有意义。