编一个程序用成员函数重载运算符加号和减号将两个二维数组相加和相减要求第一个二维数组的只有构造函数设计另一个二维数组的值
时间: 2023-12-20 19:22:07 浏览: 138
好的,以下是一个示例程序:
```c++
#include <iostream>
using namespace std;
const int ROW = 2; // 二维数组的行数
const int COL = 3; // 二维数组的列数
class Matrix
{
private:
int data[ROW][COL]; // 二维数组
public:
Matrix() // 默认构造函数,将第一个二维数组赋值为 1~6
{
int num = 1;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
data[i][j] = num++;
}
}
}
Matrix(int arr[ROW][COL]) // 构造函数,将第二个二维数组赋值为传入的数组
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
data[i][j] = arr[i][j];
}
}
}
Matrix operator+(const Matrix& mat) // 重载加号运算符,将两个二维数组相加
{
Matrix result;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
result.data[i][j] = this->data[i][j] + mat.data[i][j];
}
}
return result;
}
Matrix operator-(const Matrix& mat) // 重载减号运算符,将两个二维数组相减
{
Matrix result;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
result.data[i][j] = this->data[i][j] - mat.data[i][j];
}
}
return result;
}
void print() // 打印二维数组
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main()
{
int arr[ROW][COL] = {{2, 4, 6}, {8, 10, 12}}; // 第二个二维数组的值
Matrix mat1, mat2(arr); // 创建两个 Matrix 类型的对象
cout << "mat1:" << endl;
mat1.print();
cout << endl;
cout << "mat2:" << endl;
mat2.print();
cout << endl;
cout << "mat1 + mat2:" << endl;
(mat1 + mat2).print(); // 使用重载的加号运算符
cout << endl;
cout << "mat1 - mat2:" << endl;
(mat1 - mat2).print(); // 使用重载的减号运算符
cout << endl;
return 0;
}
```
运行结果:
```
mat1:
1 2 3
4 5 6
mat2:
2 4 6
8 10 12
mat1 + mat2:
3 6 9
12 15 18
mat1 - mat2:
-1 -2 -3
-4 -5 -6
```
阅读全文