对于多维数组,有可能以某种方式重载运算符吗?
就像是:
class A {
...
int& operator[][] (const int x, const int y);
...
}
Run Code Online (Sandbox Code Playgroud)
jal*_*alf 10
不,这是不可能的.但有两种选择:
您可以operator[]返回一个较小维度的数组(对于3D数组,它将返回一个二维数组,对于一个二维数组,它将返回一维数组;对于一维数组,它将返回一个单独的元素).然后你可以用你想要的语法"将它们串在一起".(arr[x][y][z])
或者,您可以重载operator(),因为这可能需要多个参数.
然后您可以像这样使用它来索引到3D数组,例如: arr(x,y,z)
但是你不能超载[][]或[][][]作为单个操作员.