【C++】デストラクタが呼ばれる/呼ばれない

すごく久しぶりの記事更新になってしまいました。
デストラクタ備忘録です。

  • 派生されるクラスのデストラクタは仮想関数にしなければならない
  • 純粋仮想デストラクタには定義が必要
  • placement new により構築されたオブジェクトは明示的にデストラクタを呼び出す必要がある
  • std::shared_ptr<T> は、リソースを解体する時に、初期化時の実引数の型のデストラクタが呼ばれる
  • std::unique_ptr<T> の場合は、shared_ptr とは異なり T 型のデストラクタが呼ばれる
続きを読む

新世界へ

あけましておめでとうございます。
遅すぎですね。

ってことで、『MONSTER HUNTER: WORLD』が届きました。
モンハン、3Gか4くらいまではそれなりにマトモに遊んでいたんですが、それ以降はなんだか長続きせずにいます。
本作はどこまで進められるだろうか……。

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

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
};
続きを読む