class CBase
{
~CBase(void){std::cout << "CBaseのデストラクタ\n"};
};
class CDerived : public CBase
{
~CDerived(void){std::cout << "CDerivedのデストラクタ\n"};
};
int main(void)
{
CBase* ins = new CDerived; // 派生元のポインタ型に派生先クラスを格納
delete ins;
return 0;
}
◆実行結果
CBaseのデストラクタ
◆要点
派生元のポインタ型に、派生先のクラスを入れると
派生元のクラスのデストラクタのみ実行される
派生元をvirtualデストラクタにすれば
・派生先
↓
・派生元
の順に両方のデストラクタが実行される
{
~CBase(void){std::cout << "CBaseのデストラクタ\n"};
};
class CDerived : public CBase
{
~CDerived(void){std::cout << "CDerivedのデストラクタ\n"};
};
int main(void)
{
CBase* ins = new CDerived; // 派生元のポインタ型に派生先クラスを格納
delete ins;
return 0;
}
◆実行結果
CBaseのデストラクタ
◆要点
派生元のポインタ型に、派生先のクラスを入れると
派生元のクラスのデストラクタのみ実行される
派生元をvirtualデストラクタにすれば
・派生先
↓
・派生元
の順に両方のデストラクタが実行される