C++:コンストラクション関数の初期化リストと初期化の順序

604 ワード

コンストラクション関数の初期化値のリスト:
オブジェクトのデータ・メンバーでは、初期化と付与には違いがあります.
データ・メンバーがconst、参照、またはデフォルトのコンストラクション関数が指定されていないクラス・タイプに属する場合は、コンストラクション関数の初期値リストを使用してこれらのメンバーに初期値を指定する必要があります.そうしないと、エラーが発生します.
//   :ci   ri      
CobstRef::ConstRef(int ii)
{//   
    i = ii;
    ci = ii;
    ri = i;
}

//  
ConstRef::ConstRef(int ii):i(ii),ci(ii),ri(i){}

クラスでは、初期化はデータ・メンバーを直接初期化し、付与値は実際には初期化、再付与されます.したがって,付与の効率は比較的低い.
さらに重要なのは、一部のデータ・メンバーが初期化されなければならないことです.
初期値リストを使う習慣を身につけることをお勧めします.
メンバーの初期化の順序:
メンバーの初期化の順序は、クラス定義で表示される順序と一致し、コンストラクション関数の初期値リストの前後の位置は実際の初期化順序に影響しません.