设计一个矩阵类Matrix,要求: (1)可以建立2行2列矩阵,支持无参数(创建单位阵)和给定参数创建特定矩阵。 (2)成员函数重载()运算符,可以输出矩阵内容。 (3)成员函数重载+运算符,实现矩阵相加,并支持连加(a+b+c)。 (4)成员函数重载*运算符,实现矩阵相乘,并支持连乘(a*b*c)。 (5)写出主函数对该类进行测试。
时间: 2024-01-18 19:02:13 浏览: 31
好的,以下是Matrix类的实现:
```C++
#include <iostream>
using namespace std;
class Matrix {
private:
int data[2][2];
public:
Matrix() {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
if (i == j) data[i][j] = 1; // 创建单位阵
else data[i][j] = 0;
}
}
}
Matrix(int a, int b, int c, int d) {
data[0][0] = a;
data[0][1] = b;
data[1][0] = c;
data[1][1] = d;
}
void operator()() { // 重载()运算符
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
Matrix operator+(Matrix m) { // 重载+运算符
Matrix result;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
result.data[i][j] = data[i][j] + m.data[i][j];
}
}
return result;
}
Matrix operator*(Matrix m) { // 重载*运算符
Matrix result;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
result.data[i][j] = 0;
for (int k = 0; k < 2; k++) {
result.data[i][j] += data[i][k] * m.data[k][j];
}
}
}
return result;
}
};
int main() {
Matrix a(1, 2, 3, 4), b(5, 6, 7, 8), c(9, 10, 11, 12);
Matrix d = a + b + c;
Matrix e = a * b * c;
d();
e();
return 0;
}
```
输出结果为:
```
15 18
21 24
19 22
43 50
```