有两个矩阵a和b,均为2行3列。求两个矩阵之和。 重载运算符“+”,使之能用于矩阵相加。如c=a+b。重载插入运算符”<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。,
时间: 2024-02-11 11:08:18 浏览: 84
好的,这是一个关于矩阵加法的问题。以下是对应的C++代码实现:
```c++
#include <iostream>
using namespace std;
class Matrix {
private:
int row, col;
int** data;
public:
Matrix(int row, int col) {
this->row = row;
this->col = col;
data = new int*[row];
for (int i = 0; i < row; ++i) {
data[i] = new int[col];
}
}
~Matrix() {
for (int i = 0; i < row; ++i) {
delete[] data[i];
}
delete[] data;
}
friend Matrix operator+(const Matrix& a, const Matrix& b) {
Matrix c(a.row, a.col);
for (int i = 0; i < a.row; ++i) {
for (int j = 0; j < a.col; ++j) {
c.data[i][j] = a.data[i][j] + b.data[i][j];
}
}
return c;
}
friend ostream& operator<<(ostream& os, const Matrix& a) {
for (int i = 0; i < a.row; ++i) {
for (int j = 0; j < a.col; ++j) {
os << a.data[i][j] << " ";
}
os << endl;
}
return os;
}
friend istream& operator>>(istream& is, Matrix& a) {
for (int i = 0; i < a.row; ++i) {
for (int j = 0; j < a.col; ++j) {
is >> a.data[i][j];
}
}
return is;
}
};
int main() {
Matrix a(2, 3), b(2, 3);
cout << "Please input matrix a:" << endl;
cin >> a;
cout << "Please input matrix b:" << endl;
cin >> b;
Matrix c = a + b;
cout << "a + b = " << endl;
cout << c;
return 0;
}
```
在上述代码中,我们定义了一个矩阵类Matrix,其中包含了矩阵的行数、列数和数据。我们重载了运算符+,使之能够对两个矩阵进行相加。同时,我们还重载了插入运算符<<和提取运算符>>,使之能够用于该矩阵的输入和输出。在main函数中,我们创建了两个2行3列的矩阵a和b,并且通过输入重载运算符>>对其进行了输入。然后,我们将这两个矩阵相加,并将结果通过输出重载运算符<<输出到屏幕上。
阅读全文