C++ 如何使用重载运算符合并两个数组?
例如,如果array1包含 1, 2, 5, 9, 12, 15 array2包含 3, 4, 7, 13, 19, 21, 25 然后在执行语句之后 阵列1+=阵列2 array2将保持不变,array1将包含 1,2,3,4,5,7,9,12,13,15,19,21,25C++ 如何使用重载运算符合并两个数组?,c++,arrays,class,merge,operator-overloading,C++,Arrays,Class,Merge,Operator Overloading,例如,如果array1包含 1, 2, 5, 9, 12, 15 array2包含 3, 4, 7, 13, 19, 21, 25 然后在执行语句之后 阵列1+=阵列2 array2将保持不变,array1将包含 1,2,3,4,5,7,9,12,13,15,19,21,25 class Array { public: Array(int sze)// default constructor { size = sze; ptr = new int
class Array
{
public:
Array(int sze)// default constructor
{
size = sze;
ptr = new int [size];
}
//.......
Array operator += (Array & a1, Array & a2)
{
//....
return 0;
}
它应该需要1个参数
一种简单的方法是将
this->ptr
的所有内容复制到临时数组中,然后删除ptr的内容以适应旧内容+新内容,为this->ptr
分配更大的内存,然后从临时数组中复制内容和a2的内容,最后返回对的引用,这是一种合并两个数组的简单方法:
Array& operator += (const Array & a2)
{
//....
return this;
}
数组和数组::运算符+(常量数组和sm){
int i,j;
此->\u size=\u size+sm.\u size;
对于(i=0;i<_size;i++);
此->数据[i]=数据[i];
对于(j=_size;j数据[i]=sm.data[i];
归还*这个;
}
按常量引用获取a2
,并在释放旧分配之前执行新分配,以防出现异常。
Array & Array::operator +(const Array &sm){
int i,j;
this->_size = _size + sm._size;
for(i = 0; i < _size; i++);
this->data[i] = data[i];
for(j = _size; j < sm._size;j++,i++);
this->data[i] = sm.data[i];
return *this;
}