C++下标运算符为什么不可重载为友元函数

来源:百度知道 编辑:UC知道 时间:2024/07/07 22:32:03

一般具有下标操作的类是容器类,所以下标操作必须为类的成员函数,因而它不能为友员函数,如:
class TVector
{
public:
int& operator[](int i){ return v[i]; }
const int& operator[](int i) const { return v[i]; }
//下面利用友员函数的实现,首先它不能判断对应具体的[],它不知道如何操,如int a[3]; a[1] = 2; 是不是调用这里的函数?
//另外,再该函数内部的TVector对象a,如何和外界关联?
friend int& operator[](int i) const { static TVector a; return a.v[i]; }
private:
int *v;
};