c++ 重载运算符矩阵相乘
时间: 2024-05-30 10:06:31 浏览: 196
在C++中,我们可以使用运算符重载(operator overloading)技术来定义矩阵相乘的运算符。运算符重载是指对C++中已有的运算符进行重新定义,使其能够适用于自定义的数据类型。
我们可以通过定义一个矩阵类,并在其中重载乘法运算符(*)来实现矩阵相乘操作。在重载运算符时需要注意参数类型和返回值类型的定义。以下是一个简单的矩阵类的示例:
```
class Matrix {
private:
int row, col;
int **data;
public:
Matrix(int r, int c) : row(r), col(c) {
data = new int*[row];
for(int i = 0; i < row; i++)
data[i] = new int[col];
}
Matrix(const Matrix& m) : row(m.row), col(m.col) {
data = new int*[row];
for(int i = 0; i < row; i++)
data[i] = new int[col];
for(int i = 0; i < row; i++)
for(int j = 0; j < col; j++)
data[i][j] = m.data[i][j];
}
~Matrix() {
for(int i = 0; i < row; i++)
delete[] data[i];
delete[] data;
}
Matrix operator*(const Matrix& m) const {
Matrix result(row, m.col);
for(int i = 0; i < row; i++)
for(int j = 0; j < m.col; j++) {
result.data[i][j] = 0;
for(int k = 0; k < col; k++)
result.data[i][j] += data[i][k] * m.data[k][j];
}
return result;
}
};
```
在上述代码中,我们定义了一个Matrix类,其中包含了矩阵的行数、列数以及数据。在类中,我们重载了乘法运算符(*),使其能够实现矩阵相乘的操作。在重载运算符时,我们需要使用const关键字来确保不会修改原对象,同时返回一个新的矩阵对象。
使用该类进行矩阵相乘操作时,只需使用乘法运算符即可,例如:
```
Matrix A(2, 3);
Matrix B(3, 4);
// 初始化矩阵A、B
Matrix C = A * B; // 矩阵相乘操作
```