#include "iostream"
struct S_Base{public:float x,y;virtual ~S_Base(){;}};
class C_Child_S_Base:public S_Base{public:virtual ~C_Child_S_Base(){;}};
class C_GrandChild_S_Base:public C_Child_S_Base{public:~C_GrandChild_S_Base(){;}};
class C_Base{public:float x,y;virtual ~C_Base(){;}};
class C_Child_C_Base:public C_Base{public:virtual ~C_Child_C_Base(){;}};
class C_GrandChild_C_Base:public C_Child_C_Base{public:~C_GrandChild_C_Base(){;}};

int main(int argc, char* argv[]){
S_Base *p_SB=(S_Base *)new C_GrandChild_S_Base; delete p_SB;
C_Base *p_CB=(C_Base *)new C_GrandChild_C_Base; delete p_CB;
return 0;
}
structを継承する時に基底structでデフォルトデストラクタを使ってる例
をよく見かけますが、仮想デストラクタでないためかVC++.Netだと
ASERT落ちします(当然ながらclassも同じです)何故でしょう?
今までふつーに使って平気だと思ってたのですが・・・
上のソースのベースのデストラクタをコメントアウトして実行してみてください