二维数组array类的设计并重载下标运算符,函数调用运算符
时间: 2024-05-13 22:14:49 浏览: 97
数组类重载运算符 的实例
3星 · 编辑精心推荐
以下是一个二维数组(矩阵)类的设计示例,包括重载下标运算符和函数调用运算符:
```c++
class Matrix {
private:
int rows; // 行数
int cols; // 列数
int** data; // 数据数组
public:
Matrix(int r, int c) : rows(r), cols(c) {
// 分配内存
data = new int*[rows];
for (int i = 0; i < rows; i++) {
data[i] = new int[cols];
}
}
// 析构函数
~Matrix() {
// 释放内存
for (int i = 0; i < rows; i++) {
delete[] data[i];
}
delete[] data;
}
// 重载下标运算符
int* operator[](int i) {
return data[i];
}
// 重载函数调用运算符
int operator()(int i, int j) {
return data[i][j];
}
};
```
在上面的示例中,我们使用了一个二级指针 `int** data` 来存储二维数组的数据。在构造函数中,我们使用了动态内存分配来分配内存。在析构函数中,我们使用了对应的 delete 操作来释放内存。
在重载下标运算符时,我们返回了一个指向第 i 行数据的指针。这使得我们可以使用类似 `matrix[i][j]` 的语法来访问二维数组中的元素。
在重载函数调用运算符时,我们返回了第 i 行、第 j 列的元素。这使得我们可以使用类似 `matrix(i, j)` 的语法来访问二维数组中的元素。
请注意,上面的示例并未考虑边界情况和异常处理。在实际使用中,我们需要根据实际情况进行相应的处理。
阅读全文