设计一个矩阵类Matrix,要求: (1)可以建立2行2列矩阵,支持无参数(创建单位阵)和给定参数创建特定矩阵。 (2)成员函数重载()运算符,可以输出矩阵内容。 (3)成员函数重载+运算符,实现矩阵相加,并支持连加(a+b+c)。 (4)成员函数重载*运算符,实现矩阵相乘,并支持连乘(a*b*c)。 (5)写出主函数对该类进行测试。
时间: 2024-01-18 15:02:13 浏览: 58
matrix_with_given_sum:给定行和列的总和,检查是否可以使用布尔2D矩阵
好的,我会根据你的要求设计一个矩阵类Matrix,代码如下:
```cpp
#include<iostream>
using namespace std;
class Matrix{
private:
int m[2][2];
public:
// 构造函数
Matrix(){ // 无参数构造函数,创建单位阵
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
if(i==j){
m[i][j]=1;
}
else{
m[i][j]=0;
}
}
}
}
Matrix(int a, int b, int c, int d){ // 给定参数创建特定矩阵
m[0][0]=a;
m[0][1]=b;
m[1][0]=c;
m[1][1]=d;
}
// 重载()运算符
void operator()(){
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
cout<<m[i][j]<<" ";
}
cout<<endl;
}
}
// 重载+运算符
Matrix operator+(const Matrix& m2){
Matrix result;
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
result.m[i][j]=m[i][j]+m2.m[i][j];
}
}
return result;
}
// 重载*运算符
Matrix operator*(const Matrix& m2){
Matrix result;
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
result.m[i][j]=0;
for(int k=0;k<2;k++){
result.m[i][j]+=m[i][k]*m2.m[k][j];
}
}
}
return result;
}
};
int main(){
Matrix a(1,2,3,4);
Matrix b(5,6,7,8);
Matrix c(9,10,11,12);
Matrix d; // 单位阵
Matrix e=a+b+c+d; // 连加
Matrix f=a*b*c; // 连乘
e(); // 输出矩阵内容
f();
return 0;
}
```
在主函数中,我们定义了四个矩阵对象a、b、c、d,其中a、b、c是根据给定参数创建的特定矩阵,d是无参数构造函数创建的单位阵。然后,我们利用重载的+和*运算符实现了矩阵的相加和相乘,并支持了连加和连乘。最后,我们通过重载的()运算符输出了矩阵的内容。
阅读全文