矩阵相乘(运算符重载)
时间: 2023-07-11 08:30:24 浏览: 60
好的,我可以为您提供一个矩阵相乘的运算符重载示例代码,请您参考:
```C++
#include <iostream>
using namespace std;
const int MAX_SIZE = 100;
class Matrix {
private:
int row, col;
double data[MAX_SIZE][MAX_SIZE];
public:
Matrix(int r, int c) : row(r), col(c) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
data[i][j] = 0;
}
}
}
Matrix operator*(const Matrix& mat) {
Matrix res(row, mat.col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < mat.col; j++) {
for (int k = 0; k < col; k++) {
res.data[i][j] += data[i][k] * mat.data[k][j];
}
}
}
return res;
}
friend istream& operator>>(istream& is, Matrix& mat) {
for (int i = 0; i < mat.row; i++) {
for (int j = 0; j < mat.col; j++) {
is >> mat.data[i][j];
}
}
return is;
}
friend ostream& operator<<(ostream& os, const Matrix& mat) {
for (int i = 0; i < mat.row; i++) {
for (int j = 0; j < mat.col; j++) {
os << mat.data[i][j] << " ";
}
os << endl;
}
return os;
}
};
int main() {
int r1, c1, r2, c2;
cout << "请输入第一个矩阵的行数和列数:";
cin >> r1 >> c1;
Matrix mat1(r1, c1);
cout << "请输入第一个矩阵的元素:" << endl;
cin >> mat1;
cout << "请输入第二个矩阵的行数和列数:";
cin >> r2 >> c2;
Matrix mat2(r2, c2);
cout << "请输入第二个矩阵的元素:" << endl;
cin >> mat2;
if (c1 != r2) {
cout << "两个矩阵无法相乘!" << endl;
return 0;
}
Matrix res = mat1 * mat2;
cout << "矩阵相乘的结果是:" << endl;
cout << res;
return 0;
}
```
在上面的代码中,我们定义了一个 Matrix 类,其中包含了矩阵的行数、列数和元素,同时重载了 `*` 运算符,实现了矩阵相乘的功能。我们还重载了 `>>` 和 `<<` 运算符,可以方便地从输入流和输出流中读取和输出矩阵。在主函数中,我们首先输入两个矩阵的行数和列数,然后分别输入两个矩阵的元素,最后调用 `*` 运算符得到矩阵相乘的结果,并输出到屏幕上。