C++の初期化子とは

初期化子絡みで色々用語があって迷ったので、まとめておく。
各用語は「プログラミング言語C++ 第4版」に基づく。

  • 初期化子
    {}構文による初期化のことを指している模様。
    ※厳密にいうと「=」が使えるケースもあるがややこしくなるので無視。

    int i {10};
    
  • 初期化子並びコンストラクタ
    std::initialize_list型を1個受け取るコンストラクタのこと
  • メンバ初期化子並び
    コンストラクタで各メンバのコンストラクタを呼び出すやり方。代入による初期化より、メンバ初期化子の方が効率がいい場合が多い。
    なぜなら、メンバ初期化子は初期値をコピーして初期化するのに対し、代入の場合はデフォルト値やコンストラクタで初期化してから初期値をコピーするため。

    Club::Club(const string& n, Date fd) : name{n}, founded{fd} 
    {
    }
    

     

  • クラス内メンバ初期化子
    クラス宣言の中で、非staticメンバ変数に対して、初期化子を指定すること。
    クラス内メンバ初期化子は、{}と=が使用できる。

    class A {
    public:
    int a {7};
    int b = 77;
    }
    

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です