import std.c.stdio;
class A
{
~this(){
printf("dstruct A\n");
fflush(stdout);
}
void func(){}
}
class B
{
protected A a;
this(){a = new A;}
void test(){a.func();}
~this()
{
printf("dstruct B\n");
fflush(stdout);
}
}
class D : B
{
~this()
{
printf("dstruct D\n");
fflush(stdout);
super.test();
}
}
void main()
{
D d = new D;
}