使用友元函数实现矩阵乘法
时间: 2023-11-27 15:21:04 浏览: 46
好的,下面是使用友元函数实现矩阵乘法的示例代码:
```c++
#include <iostream>
using namespace std;
class Matrix {
private:
int m, n;
int **data;
public:
Matrix(int m, int n) {
this->m = m;
this->n = n;
data = new int*[m];
for (int i = 0; i < m; i++) {
data[i] = new int[n];
for (int j = 0; j < n; j++) {
data[i][j] = 0;
}
}
}
friend Matrix operator*(const Matrix& m1, const Matrix& m2) {
Matrix result(m1.m, m2.n);
for (int i = 0; i < m1.m; i++) {
for (int j = 0; j < m2.n; j++) {
for (int k = 0; k < m1.n; k++) {
result.data[i][j] += m1.data[i][k] * m2.data[k][j];
}
}
}
return result;
}
void setData(int i, int j, int value) {
data[i][j] = value;
}
void print() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
Matrix m1(2, 3);
m1.setData(0, 0, 1);
m1.setData(0, 1, 2);
m1.setData(0, 2, 3);
m1.setData(1, 0, 4);
m1.setData(1, 1, 5);
m1.setData(1, 2, 6);
cout << "Matrix 1:" << endl;
m1.print();
Matrix m2(3, 2);
m2.setData(0, 0, 7);
m2.setData(0, 1, 8);
m2.setData(1, 0, 9);
m2.setData(1, 1, 10);
m2.setData(2, 0, 11);
m2.setData(2, 1, 12);
cout << "Matrix 2:" << endl;
m2.print();
Matrix result = m1 * m2;
cout << "Matrix 1 * Matrix 2:" << endl;
result.print();
return 0;
}
```
在这个示例中,我们定义了一个 `Matrix` 类来表示矩阵,并实现了一个友元函数 `operator*` 来实现矩阵乘法。在 `main` 函数中,我们创建了两个矩阵并给它们赋值,然后通过 `operator*` 函数计算了它们的乘积并打印出来。