两个矩阵a,b,均为2行3列,求两个矩阵之和,重载运算符“+”为成员函数,使之用于两个矩阵相加,如c=a+b,请完成矩阵类的书写
时间: 2023-11-28 20:51:31 浏览: 63
下面是一个简单的矩阵类的实现,包括矩阵的构造函数、析构函数、重载运算符“+”等:
```cpp
class Matrix {
private:
int **data; // 存放矩阵数据的指针
int row, col; // 矩阵的行数和列数
public:
// 构造函数,创建一个row行col列的矩阵
Matrix(int row, int col) {
this->row = row;
this->col = col;
data = new int*[row];
for (int i = 0; i < row; i++) {
data[i] = new int[col];
for (int j = 0; j < col; j++) {
data[i][j] = 0; // 初始化为0
}
}
}
// 析构函数,释放矩阵占用的内存
~Matrix() {
for (int i = 0; i < row; i++) {
delete[] data[i];
}
delete[] data;
}
// 重载运算符“+”,实现两个矩阵之和
Matrix operator+(Matrix& other) {
Matrix result(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result.data[i][j] = data[i][j] + other.data[i][j];
}
}
return result;
}
};
```
使用示例:
```cpp
Matrix a(2, 3); // 创建一个2行3列的矩阵a
Matrix b(2, 3); // 创建一个2行3列的矩阵b
// 矩阵赋值
a.data[0][0] = 1;
a.data[0][1] = 2;
a.data[0][2] = 3;
a.data[1][0] = 4;
a.data[1][1] = 5;
a.data[1][2] = 6;
b.data[0][0] = 2;
b.data[0][1] = 3;
b.data[0][2] = 4;
b.data[1][0] = 5;
b.data[1][1] = 6;
b.data[1][2] = 7;
Matrix c = a + b; // 计算矩阵c=a+b
```
需要注意的是,这个矩阵类的实现比较简单,没有考虑到一些特殊情况,比如矩阵的行数、列数不一致时的处理等。在实际使用中,需要根据具体需求进行修改和完善。