如何重载运算符 [][]

How to overload operator [][]

我的问题是如何重载运算符 [][] ? 此外,当我呼叫接线员的分机时,幕后发生了什么?

正确的术语是运算符重载

要实现某种 [][] 需要您为第一个 [] 返回一个代理对象,运算符 [] 再次重载。

()() 的链可以用类似的方式完成。

对于幻灯片运算符类型,请参阅What is the "-->" operator in C++?

运算符[][]...()()...-->(至于最后一个,我假设你不是指--->)实际上不是c++运算符,但 C++ 运算符的组合。

例如[][][],对左值应用[],return某个左值,再次应用[],然后对第三次。所以没有实际的 [][][],只是 [] 应用了 3 次。

int a[2] = {0,1};
int b[3] = {2,3,4};
int *c[2] = {a,b};

c[0][1]; // [0] first extracts 'a' from 'c', then [1] extracts 1 from a (the value in the second index).

()()()也是如此。

-->也是遵循同样的思路,只不过这里不是重复组合同一个运算符,而是--的组合,将return的左值和然后将其减 1,>,这将比较左侧和右侧。