用c++编写一个程序,用友元函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,第二个二维数组的值由键盘输入
时间: 2024-03-24 14:36:08 浏览: 84
用类的友元函数重载单目运算符-C++面向对象程序设计教程 第4章 运算符重载
好的,我来给你写一个示例程序,帮你理解如何实现这个功能。
```cpp
#include <iostream>
using namespace std;
class TwoDArray {
private:
int **data;
int row, col;
public:
TwoDArray(int r, int c) {
row = r;
col = c;
data = new int*[row];
for (int i = 0; i < row; i++) {
data[i] = new int[col];
}
// 将第一个二维数组的值设置为 1
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
data[i][j] = 1;
}
}
}
// 销毁二维数组
~TwoDArray() {
for (int i = 0; i < row; i++) {
delete[] data[i];
}
delete[] data;
}
// 重载运算符 +
friend TwoDArray operator+(const TwoDArray& a, const TwoDArray& b) {
TwoDArray result(a.row, a.col);
for (int i = 0; i < a.row; i++) {
for (int j = 0; j < a.col; j++) {
result.data[i][j] = a.data[i][j] + b.data[i][j];
}
}
return result;
}
// 重载运算符 -
friend TwoDArray operator-(const TwoDArray& a, const TwoDArray& b) {
TwoDArray result(a.row, a.col);
for (int i = 0; i < a.row; i++) {
for (int j = 0; j < a.col; j++) {
result.data[i][j] = a.data[i][j] - b.data[i][j];
}
}
return result;
}
// 输出二维数组
friend ostream& operator<<(ostream& os, const TwoDArray& a) {
for (int i = 0; i < a.row; i++) {
for (int j = 0; j < a.col; j++) {
os << a.data[i][j] << " ";
}
os << endl;
}
return os;
}
// 输入二维数组
friend istream& operator>>(istream& is, TwoDArray& a) {
for (int i = 0; i < a.row; i++) {
for (int j = 0; j < a.col; j++) {
is >> a.data[i][j];
}
}
return is;
}
};
int main() {
TwoDArray a(3, 3);
TwoDArray b(3, 3);
cout << "请输入第二个二维数组的值:" << endl;
cin >> b;
cout << "第一个二维数组的值:" << endl << a;
cout << "第二个二维数组的值:" << endl << b;
TwoDArray c = a + b;
TwoDArray d = a - b;
cout << "相加的结果:" << endl << c;
cout << "相减的结果:" << endl << d;
return 0;
}
```
在上面的代码中,我们定义了一个名为 `TwoDArray` 的类,它有两个私有成员变量 `data`、`row` 和 `col`,分别表示二维数组的元素值、行数和列数。在构造函数中,我们将第一个二维数组的值设置为 1。然后我们重载了运算符 `+` 和 `-`,分别实现了两个二维数组的相加和相减操作。最后我们定义了两个友元函数 `operator<<` 和 `operator>>`,分别用于输出和输入二维数组。
在 `main` 函数中,我们首先创建了两个 `TwoDArray` 对象 `a` 和 `b`,其中 `a` 的值已经在构造函数中设置好了,而 `b` 的值需要从键盘输入。然后我们输出了两个二维数组的值,并分别计算了它们的相加和相减结果,并输出了结果。
希望这个示例程序能够帮助你理解如何用友元函数重载运算符 `+` 和 `-` 实现两个二维数组的相加和相减操作。
阅读全文