(2)用友元函数函数重载运算符“+”和“-”,将两个二维数组相加和相减。
时间: 2023-10-05 19:06:28 浏览: 56
好的,以下是代码实现:
```cpp
#include <iostream>
using namespace std;
class TwoDArray {
private:
int **arr;
int rows, cols;
public:
// 构造函数设置数组的值
TwoDArray(int r, int c) {
rows = r;
cols = c;
arr = new int*[rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
for (int j = 0; j < cols; j++) {
arr[i][j] = i + j;
}
}
}
// 友元函数重载运算符“+”
friend TwoDArray operator+(TwoDArray &a, TwoDArray &b) {
TwoDArray result(a.rows, a.cols);
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < a.cols; j++) {
result.arr[i][j] = a.arr[i][j] + b.arr[i][j];
}
}
return result;
}
// 友元函数重载运算符“-”
friend TwoDArray operator-(TwoDArray &a, TwoDArray &b) {
TwoDArray result(a.rows, a.cols);
for (int i = 0; i < a.rows; i++) {
for (int j = 0; j < a.cols; j++) {
result.arr[i][j] = a.arr[i][j] - b.arr[i][j];
}
}
return result;
}
// 显示数组的值
void display() {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
TwoDArray arr1(2, 3);
TwoDArray arr2(2, 3);
cout << "arr1的值:" << endl;
arr1.display();
cout << "arr2的值:" << endl;
arr2.display();
TwoDArray arr3 = arr1 + arr2;
cout << "arr3 = arr1 + arr2 的值:" << endl;
arr3.display();
TwoDArray arr4 = arr1 - arr2;
cout << "arr4 = arr1 - arr2 的值:" << endl;
arr4.display();
return 0;
}
```
使用示例:
```
arr1的值:
0 1 2
1 2 3
arr2的值:
0 1 2
1 2 3
arr3 = arr1 + arr2 的值:
0 2 4
2 4 6
arr4 = arr1 - arr2 的值:
0 0 0
0 0 0
```