2015-03-08 95 views
1
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,如何使用重載操作符合並兩個數組?

回答

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

它應該採取1個參數。

一個簡單的方法是到this->ptr所有內容的內容從臨時數組複製到一個臨時數組,然後刪除PTR的內容,以適應舊內容+新內容,this->ptr分配更大的內存,然後複製和a2的內容,最後返回this

+0

通過const引用取得'a2',並在發生異常時釋放舊分配之前執行新分配。 – 2015-03-08 23:37:49