有两个矩阵a和b,均为2行3列。重载运算符“+”为成员函数,使之能用于矩阵相加,如c=a+b;重载运算符“-”,,使之能用于矩阵相减,如c=a-b。先定义一个矩阵类,再重载+为成员函数,-为友元函数,注意参数个数,是否有隐藏的对象。 c++
时间: 2024-12-18 13:31:24 浏览: 80
在C++中,我们可以创建一个名为`Matrix`的类来表示二维数组(矩阵),并重载`+`和`-`运算符以便支持矩阵的加法和减法操作。首先,我们需要定义矩阵类,包括数据成员(二维数组)、尺寸等,并提供构造函数、赋值运算符等基本功能。
```cpp
#include <iostream>
using namespace std;
class Matrix {
public:
int rows, cols;
int data[2][3]; // 2行3列的数据
// 构造函数,初始化矩阵
Matrix(int r = 2, int c = 3) : rows(r), cols(c) {
for (int i = 0; i < rows; ++i)
for (int j = 0; j < cols; ++j)
data[i][j] = 0;
}
// 友元函数(允许对矩阵进行减法操作)
friend Matrix operator-(const Matrix& a, const Matrix& b);
// 成员函数,实现矩阵加法
Matrix operator+(const Matrix& other) {
Matrix result(rows, cols);
for (int i = 0; i < rows; ++i)
for (int j = 0; j < cols; ++j)
result.data[i][j] = data[i][j] + other.data[i][j];
return result;
}
};
// 实现矩阵减法
Matrix operator-(const Matrix& a, const Matrix& b) {
Matrix result(a.rows, a.cols);
for (int i = 0; i < a.rows; ++i)
for (int j = 0; j < a.cols; ++j)
result.data[i][j] = a.data[i][j] - b.data[i][j];
return result;
}
int main() {
Matrix a(2, 3), b(2, 3);
// 对矩阵进行操作...
Matrix c = a + b; // 加法
Matrix d = a - b; // 减法
return 0;
}
```
在这个例子中,`operator+`是一个成员函数,它接受另一个`Matrix`对象作为参数,并返回一个新的矩阵,表示两个矩阵的加法结果。而`operator-`则是友元函数,它不是`Matrix`类的一部分,但可以访问其私有数据。`main()`函数展示了如何使用这两个重载的运算符进行矩阵的加法和减法。
阅读全文
相关推荐


















