编写一个c++ 定义一个矩阵类array重载求两个矩阵的和
时间: 2023-11-25 07:08:26 浏览: 89
好的,下面是C++代码实现:
```c++
#include <iostream>
using namespace std;
class Array {
private:
int row, col;
int **data;
public:
Array(int r, int c) { // 构造函数
row = r;
col = c;
data = new int*[row];
for (int i = 0; i < row; i++) {
data[i] = new int[col];
for (int j = 0; j < col; j++) {
data[i][j] = 0;
}
}
}
~Array() { // 析构函数
for (int i = 0; i < row; i++) {
delete[] data[i];
}
delete[] data;
}
void set(int r, int c, int value) { // 设置矩阵元素的值
data[r][c] = value;
}
int get(int r, int c) { // 获取矩阵元素的值
return data[r][c];
}
Array operator+(Array &b) { // 重载加号运算符
Array c(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
c.set(i, j, data[i][j] + b.get(i, j));
}
}
return c;
}
void print() { // 打印矩阵
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
Array a(2, 2);
Array b(2, 2);
a.set(0, 0, 1);
a.set(0, 1, 2);
a.set(1, 0, 3);
a.set(1, 1, 4);
b.set(0, 0, 5);
b.set(0, 1, 6);
b.set(1, 0, 7);
b.set(1, 1, 8);
Array c = a + b;
c.print();
return 0;
}
```
代码解析:
首先定义了一个 `Array` 类,表示矩阵。
在构造函数中,我们动态分配了一个二维数组,初始化矩阵中每个元素的值为 0。
在析构函数中,我们释放了动态分配的内存。
`set` 函数用于设置矩阵中某个元素的值,`get` 函数用于获取某个元素的值。
`operator+` 函数重载了加号运算符,实现了两个矩阵的加法。
最后在 `main` 函数中,我们创建了两个矩阵 `a` 和 `b`,并设置了它们的元素值。然后进行加法运算,将结果保存在 `c` 中,并打印出来。
阅读全文