2018年10月2日のブックマーク (1件)

  • 【C++】デフォルトコンストラクタを持たない型の配列を初期化する - Bite Code

    class X { public: explicit X(int) {} }; 上のような、デフォルトコンストラクタのないクラスについて考えてみます。 このようなクラスのオブジェクトは、明示的にコンストラクタを呼ばなければ生成できません。 X x1; // NG X x2(99); // OK X xarray1[3]; // NG X xarray2[3] = { X(10), X(20), X(30) // OK }; C++03 までは、こういう型をクラスのメンバに配列として持ったとき*1とoperator new[]による確保をするときは、各要素に対して直接コンストラクタを呼ぶ方法がなく、デフォルトコンストラクタが必要でした。 class Y { X xarray[3]; // クラス定義だけならOK }; Y y; // NG X* px = new X[3]; // NG C+

    【C++】デフォルトコンストラクタを持たない型の配列を初期化する - Bite Code
    dotsarg
    dotsarg 2018/10/02
    デフォルトコンストラクターを持たないクラスの STL コンテナーへの追加の方法が記載されている。