2016-04-08 4 views
-1

私はINITIAL_CAPACITY(私のヘッダファイルに10に設定した定数)を利用しています。私の動的配列のコンストラクタ

代わりにcurrent_capacity= INITIAL_CAPACITYを宣言してからdata = new int[current_capacity]としますか?

IntVector::IntVector() 
    { 
    data = new int[INITIAL_CAPACITY]; 
    current_capacity = 0; 
    current_size = 0; 
} 

答えて

0

私の代わりにcurrent_capacity= INITIAL_CAPACITY、その後data = new int[current_capacity]を宣言するべきでしょうか?

もちろん、それは直感的にはよりクリーンな定義です。あなたのコードは次のようになります

IntVector::IntVector() 
    : current_capacity(INITIAL_CAPACITY) 
    , data(new int[current_capacity]) 
    , current_size(0) 
{} 

current_capacityはいつもあなたが現在data用に割り当てられてきたものに同期させる必要があります。

+0

私は 'new int [current_capacity]'ではなく、 'new int [INITIAL_CAPACITY]'を使うことをお勧めします。 'data_'がクラスの' current_capacity'の前にリストされている場合、 'current_capacity'は' data(new int [current_capacity]) 'に到達すると初期化されません。クラス内の変数の順序に依存する必要はありません。 – NathanOliver

+0

@ NathanOliverあなたのことについて警告が出されます。私は、同期の必要性をより明確にするよう提案しています。 –

+0

問題ありません。私は 'new int [INITIAL_CAPACITY]'を使うとコードを壊れにくくすると思います。 – NathanOliver