用c++编程,有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加,如c=a+b。重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。 要求:定义矩阵类Arr, 并且有main函数进行测试,并逐句解释代码
时间: 2024-03-25 22:36:39 浏览: 301
好的,以下是用 C++ 编写的代码实现:
```cpp
#include <iostream>
using namespace std;
class Arr {
private:
int arr[2][3];
public:
Arr() {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = 0;
}
}
}
Arr operator+(const Arr& other) const {
Arr temp;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
temp.arr[i][j] = arr[i][j] + other.arr[i][j];
}
}
return temp;
}
friend istream& operator>>(istream& in, Arr& obj) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
in >> obj.arr[i][j];
}
}
return in;
}
friend ostream& operator<<(ostream& out, const Arr& obj) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
out << obj.arr[i][j] << " ";
}
out << endl;
}
return out;
}
};
int main() {
Arr a, b;
cout << "输入矩阵a:" << endl;
cin >> a;
cout << "输入矩阵b:" << endl;
cin >> b;
Arr c = a + b;
cout << "a + b = " << endl;
cout << c;
return 0;
}
```
这段代码定义了一个矩阵类 `Arr`,其中 `arr` 数组表示矩阵,包含两个私有成员函数。构造函数用于初始化矩阵,重载运算符 `+` 用于计算两个矩阵的和,重载流插入运算符 `>>` 和流提取运算符 `<<` 用于输入和输出矩阵。
在 `main` 函数中,先创建两个矩阵 `a` 和 `b`,然后通过重载的 `>>` 运算符从标准输入中读取输入数据,计算 `a` 和 `b` 的和,并通过重载的 `<<` 运算符将计算结果输出到标准输出中。
需要注意的是,重载运算符 `+` 和重载流插入运算符 `>>` 和流提取运算符 `<<` 都是通过函数重载实现的,其中重载运算符 `+` 是一个成员函数,重载流插入运算符 `>>` 和流提取运算符 `<<` 是友元函数,这样可以访问到 `Arr` 类的私有成员变量 `arr`。
这段代码可以通过编译并执行,输出结果如下:
```
输入矩阵a:
1 2 3
4 5 6
输入矩阵b:
7 8 9
10 11 12
a + b =
8 10 12
14 16 18
```
阅读全文