C++重载二维数组下标 [][]
一维数组的重载比较简单,直接参数传入下标值,然后返回指针对应的数值。但是如果是重载二维应该下标[][]应当如何解决?比如我们有
Array2 a(3, 4);
int i, j;
for (i = 0; i < 3; ++i)
for (j = 0; j < 4; j++)
a[i][j] = i * 4 + j;
for (i = 0; i < 3; ++i) {
for (j = 0; j < 4; j++) {
cout << a(i,j) << ",";
}
cout << endl;
}
cout << "next" << endl;
Array2 b; b = a;
for (i = 0; i < 3; ++i) {
for (j = 0; j < 4; j++) {
cout << b[i][j] << ",";
}
cout << endl;
我们首先要知道需要重载[] ()和=三个运算符。
class Array2
{
public:
Array2(int m, int n)
{
p= new int*[m];
for (int i = 0; i < m; i++)
p[i] = new int[n];
};
Array2()