重载函数矩阵相加
时间: 2023-07-26 12:08:19 浏览: 76
可以通过重载运算符实现矩阵相加的操作,示例代码如下:
```c++
#include <iostream>
using namespace std;
class Matrix {
private:
int rows, 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(const Matrix& m) {
rows = m.rows;
cols = m.cols;
data = new int*[rows];
for (int i = 0; i < rows; i++) {
data[i] = new int[cols];
for (int j = 0; j < cols; j++) {
data[i][j] = m.data[i][j];
}
}
}
~Matrix() {
for (int i = 0; i < rows; i++) {
delete[] data[i];
}
delete[] data;
}
Matrix operator+ (const Matrix& m) {
Matrix result(rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result.data[i][j] = data[i][j] + m.data[i][j];
}
}
return result;
}
void set(int r, int c, int value) {
data[r][c] = value;
}
void print() {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
Matrix m1(2, 2);
m1.set(0, 0, 1);
m1.set(0, 1, 2);
m1.set(1, 0, 3);
m1.set(1, 1, 4);
Matrix m2(2, 2);
m2.set(0, 0, 5);
m2.set(0, 1, 6);
m2.set(1, 0, 7);
m2.set(1, 1, 8);
Matrix m3 = m1 + m2;
m3.print();
return 0;
}
```
运行结果为:
```
6 8
10 12
```
在这个示例中,定义了一个矩阵类 Matrix,其中包含矩阵的行数和列数,以及一个二维指针 data 存储矩阵的数据。通过重载运算符 +,实现了矩阵相加的操作。在 main 函数中,创建了两个矩阵 m1 和 m2,将它们相加得到 m3,最后输出 m3 的内容。
阅读全文