利用重载operator实现数组相加
时间: 2024-10-10 07:16:06 浏览: 45
在C++中,如果你想直接通过`+`运算符来相加两个数组,可以考虑使用运算符重载。对于整型数组,你可以自定义一个类,让该类包含数组数据,并实现`+=`和`friend`关键字来允许外部操作数组元素。下面是一个简单的例子:
```cpp
class ArraySum {
private:
int* data;
int size;
public:
// 构造函数
ArraySum(int arr[], int sz) : data(new int[sz]), size(sz) {
for (int i = 0; i < sz; ++i)
data[i] = arr[i];
}
// 重载+运算符,实现数组元素相加
friend ArraySum operator+(const ArraySum& a, const ArraySum& b) {
if (a.size != b.size) {
throw invalid_argument("Arrays must have the same size");
}
ArraySum sum(a);
for (int i = 0; i < a.size; ++i) {
sum.data[i] += b.data[i];
}
return sum;
}
~ArraySum() {
delete[] data; // 释放内存
}
};
// 使用示例
int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6};
ArraySum array1(arr1, 3);
ArraySum array2(arr2, 3);
ArraySum result = array1 + array2; // 相加
for (int i = 0; i < result.size; ++i)
cout << result.data[i] << " "; // 输出相加后的数组
```
在这个例子中,`ArraySum`类模拟了一个动态数组,并实现了`+`运算符的重载,使得两个`ArraySum`实例能够相加。但是请注意,这种方法只适用于数组完全相等的情况下,如果数组长度不一致,会抛出异常。
阅读全文