c++ - 如何重载下标运算符以便可交换
问题描述
在以下声明中:
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
我怎样才能做到这一点?
解决方案
你不能。operator[]
需要作为其左操作数类型的成员函数重载,这对于整数类型是不可能的。
推荐阅读
- c - 静态结构初始化
- python - 如何使用 DataFrame 中的每一行来过滤查询
- ansible - 角色复制和执行,为可以有多个条目的参数传递多个变量结构
- python - 获取 MongoDB 中集合的每个值的特定范围
- laravel - Auth::user() 在新路由中为空
- javascript - Bootstrap Carousel 更改特定颜色的 div
- c# - 播放器不工作的统一跳转代码
- python - Pandas 通过迭代现有的 df 行创建单独的 df
- javascript - 为什么在这种情况下超过了最大调用堆栈?
- python - 如何在具有输入名称的函数中定义列表?