1. 程式人生 > >初始化動態分配的陣列

初始化動態分配的陣列

動態分配陣列時,如果陣列元素具有類型別,將使用該類的預設建構函式實現初始化;如果陣列元素是內建型別,則無初始化。

也可以使用跟在陣列長度後面的一對空圓括號,對陣列元素做值初始化。圓括號要求編譯器對陣列做值初始化。

對於動態分配的陣列,其元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初始化列表為陣列元素提供各不相同的初值。

const物件的動態陣列

如果我們在自由儲存區中建立的陣列儲存了內建型別的const物件,則必須為這個陣列提供初始化;因為陣列元素都是const物件,無法賦值。實現這個要求的唯一方法是對陣列做值初始化。

const  int  *pci_ok   =   new  const   int[100]   ();

C++允許定義類型別的const陣列,但該類型別必須提供預設建構函式:

在這裡,將使用string類的預設建構函式初始化陣列元素。

之所以要動態分配陣列,往往是由於編譯時並不知道陣列的長度。

size_t   n  = get_size();

int  *p  =  new  int[n];

for(int*  q =  p;  q !=  p+n;  +=q )}

計算陣列長度,然後建立和處理該陣列。