今日はとても大事な話なので、結論から 基底クラスとして使うであろうクラスは、デストラクタを必ず virtual とする 基底クラスとして使わない(継承するつもりがない)クラスは、デストラクタをvirtual にしない。 なぜか? 1.について Class BaseHige { public: BaseHige(); ~BaseHige(); }; Class SuperHige : public BaseHige { public: SuperHige(); ~SuperHige(); }; のような継承関係があるとして BaseHige* basePtr = new SuperHige(); delte basePtr; とした場合、BaseHige, SuperHige両方のデストラクタが呼ばれることを期待しているのだが実際はそうはならない。 基底クラスのポインタを介しての delet