destructor ~this() for static "members." doesn't seem to get called

Cesar Rabak crabak at acm.org
Sun Feb 18 13:44:08 PST 2007


sclytrack escreveu:
> import std.stdio;
> 
> class Testb
> {
> 	this()
> 	{
> 		writefln("testb constructor");
> 	}
> 	~this()
> 	{
> 		writefln("testb destructor");		//Doesn't output on screen.
> 	}
> }
> 
> class Testy
> {
> 	static Testb inner = null;	//Destructor of Testb doesn't appear to be called.
> 
> 	this()
> 	{
> 		writefln("testy constructor");
> 		inner = new Testb();
> 	}
> 	~this()
> 	{
> 		writefln("testy destructor");
> 	}
> }
> 
> int main()
> {
> 	writefln("gdc version 0.22");
> 	Testy t = new Testy();
> 	return 0;
> }
> 
> 
> It outputs the following lines:
> ./a.out
> gdc version 0.22
> testy constructor
> testb constructor
> testy destructor
> 
> 
> The destructor of testb doesn't get called,
> before the termination of the application,
> or that is at least my perception.
> 
OK, is this supposed to be 'automatic' by the D language definition or a 
responsibility of the programmer of including an explicit call to testb 
destructor in the testy one?



More information about the D.gnu mailing list