如何使用重载操作符合并两个数组?

问题描述:

class Array 
{ 
public: 
    Array(int sze)// default constructor 
    { 
     size = sze; 
     ptr = new int [size]; 
    } 
//....... 
    Array operator += (Array & a1, Array & a2) 
    { 
    //.... 
    return 0; 
    } 

例如,如果ARRAY1包含 1,2,5,9,12,15 和数组2包含 3,图4,图7,图13,19,21,25 那么语句 ARRAY1的执行之后+ =数组2 数组2将保持不变,和ARRAY1将包含 1,2,3,4,5,7,9,12,13,15,19,21,25,如何使用重载操作符合并两个数组?

Array& operator += (const Array & a2) 
{ 
//.... 
return this; 
} 

它应该采取1个参数。

一个简单的方法是到this->ptr所有内容的内容从临时数组复制到一个临时数组,然后删除PTR的内容,以适应旧内容+新内容,this->ptr分配更大的内存,然后复制和a2的内容,最后返回this

+0

通过const引用取得'a2',并在发生异常时释放旧分配之前执行新分配。 – 2015-03-08 23:37:49