二维数组重载下标运算符
时间: 2023-12-09 17:53:38 浏览: 97
二维数组可以看作是一个由一维数组组成的数组,因此我们可以在二维数组中重载下标运算符时,先重载一维数组的下标运算符,再在二维数组的下标运算符中调用一维数组的下标运算符。
以下是一个示例代码:
```cpp
class Array2D {
public:
Array2D(int rows, int cols) : m_rows(rows), m_cols(cols) {
m_data = new int*[rows];
for (int i = 0; i < rows; i++) {
m_data[i] = new int[cols];
}
}
~Array2D() {
for (int i = 0; i < m_rows; i++) {
delete[] m_data[i];
}
delete[] m_data;
}
// 重载一维数组的下标运算符
int* operator[](int row) {
return m_data[row];
}
private:
int** m_data;
int m_rows;
int m_cols;
};
int main() {
Array2D arr(3, 4);
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[0][3] = 4;
arr[1][0] = 5;
arr[1][1] = 6;
arr[1][2] = 7;
arr[1][3] = 8;
arr[2][0] = 9;
arr[2][1] = 10;
arr[2][2] = 11;
arr[2][3] = 12;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
在上述示例代码中,我们定义了一个`Array2D`类用于表示二维数组,并在该类中重载了一维数组的下标运算符`operator[]`,该运算符返回一个指向该行第一个元素的指针,从而实现了二维数组的下标运算符重载。在`main`函数中,我们创建了一个3行4列的二维数组,并对其进行了赋值和输出操作,验证了二维数组下标运算符的正确性。
阅读全文