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

Why must operator[] be a non static member function?

本文关键字:是非 静态成员 函数 operator 为什么      更新时间:2023-10-16

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

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

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

如果"任何东西"可以用于operator()operator[],你也会遇到麻烦,因为它们也用于传统代码。如果你不需要一个对象来操作[从而选择正确的运算符],那么弄清楚使用哪个operator[]会变得很混乱。

operator=更是如此:如果不是对象,您要分配什么?除了对象之外,在任何东西上这样做是绝对没有意义的。