C++相談室 part7
■ このスレッドは過去ログ倉庫に格納されています
0148127
NGNG結論としては
デストラクタがvirtual宣言されていない現在のクラスでは
newで作成したオブジェクトのデストラクタが呼ばれない。
//CT<CBase> n_n;//2
//CT<CBaseV> n_v;//2
//CTV<CBase> v_n;//2
//CTV<CBaseV> v_v;//2
//CBase *pn_n = new CT<CBase>;//~CBase Only
//delete pn_n;
//CBaseV *pn_v = new CT<CBaseV>;//2
//delete pn_v;
//CBase *pv_n = new CTV<CBase>;//~CBase Only
//delete pv_n;
//CBaseV *pv_v = new CTV<CBaseV>;//2
//delete pv_v;
struct CBase
{
CBase(){}
~CBase()
{
AfxMessageBox(_T("~CBase()"));
}
};
struct CBaseV
{
CBaseV(){}
virtual ~CBaseV()
{
AfxMessageBox(_T("~CBaseV()"));
}
};
template<typename T> struct CT :public T
{
CT()
{}
~CT()
{
AfxMessageBox(_T("~CT()"));
}
};
template<typename T> struct CTV :public T
{
CTV()
{}
virtual ~CTV()
{
AfxMessageBox(_T("~CTV()"));
}
};
■ このスレッドは過去ログ倉庫に格納されています