首页 > 解决方案 > 如何重载下标运算符以便可交换

问题描述

在以下声明中:

int arr[10];

这两个分配都是有效的:

arr[0] = 0;

1[arr] = 1;

如何实现operator[]可交换的函数?

假设我们有这个类:

class Arr
{
private:
    int a, b, c, d;
public:
    int& operator[](...)
  ...
}

我们想要访问Arr obj;==>obj[1]返回b并且还1[obj]返回b

我怎样才能做到这一点?

标签: c++operator-overloading

解决方案


你不能。operator[]需要作为其左操作数类型的成员函数重载,这对于整数类型是不可能的。


推荐阅读