为什么 operator[] 必须是非静态成员函数
Why must operator[] be a non static member function?
C++标准说"=","()","[]"应该是非静态成员函数。
为什么以这种方式指定?为什么我们需要以这种方式定义标准?
我不知道标准委员会在想什么,但如果这些运算符不在对象本身上操作,它们就没有多大用处。
如果"任何东西"可以用于operator()
或operator[]
,你也会遇到麻烦,因为它们也用于传统代码。如果你不需要一个对象来操作[从而选择正确的运算符],那么弄清楚使用哪个operator[]
会变得很混乱。
operator=
更是如此:如果不是对象,您要分配什么?除了对象之外,在任何东西上这样做是绝对没有意义的。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 如何在C++中使用非静态成员函数作为回调函数
- (C++)为什么静态成员可以在初始化之前使用
- 类的全局对象和静态成员
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 模板化类中静态成员的延迟初始化
- 使用静态成员声明类时遇到问题
- C++:是否可以使用非静态成员变量模板?
- 枚举不是非静态数据成员或类的基类
- 是非静态数据成员错误的CPPReference定义
- 重载运算符时出错(必须是非静态成员函数)
- 运算符"="必须是非静态成员函数错误
- C++错误 C2801:'operator ='必须是非静态成员
- 为什么 operator[] 必须是非静态成员函数
- 错误:"Function"不是非静态数据成员或基类 "Class"
- 为什么迭代器::end()是非静态成员,与字符串::npos不相似
- 英特尔C++错误:"pair"不是非静态数据成员或类"std::pair<const int, double>"的基类
- 什么是非静态成员函数?
- 声明成员是静态的还是非静态的?使用虚拟继承的性能
- c++运算符必须是非静态成员函数