質問があります。コンストラクターが例外をスローしたときにデストラクタが実行されますか? サンプルコード:
#include <cstdio>
struct Test
{
Test (void)
{
throw 100;
}
~Test (void)
{
printf ("~Test\n");
}
};
int main (void)
{
try
{
Test test;
}
catch (int value)
{
}
}
このコードを実行すると、「~Test」は表示されません。わかりました、私はこの動作を理解するかもしれません。Test が動的に割り当てられたメンバーを持っていると仮定します。これらのメンバーは、コンストラクター内で割り当てられ、デストラクターで削除されます。コンストラクターで割り当てられた後に例外がスローされると、それらはどうなりますか?