Understanding the GC

Maxim Fomin maxim at maxim-fomin.ru
Wed Jan 30 03:57:00 PST 2013


On Wednesday, 30 January 2013 at 10:29:26 UTC, monarch_dodra 
wrote:
> On Wednesday, 30 January 2013 at 08:15:15 UTC, Mike Parker 
> wrote:
>> Destructors of members will not be called when an object is 
>> collected. Only that of the object itself. But, there's no 
>> guarantee that any member references will still be valid when 
>> the object's destructor is called. See below for more.
>
> Just to be clear, I suppose you (both) are talking about 
> "member references"? EG: Nested classes?

I found calling member class references as nested classes 
confusing - they are very different.

> Destroying an object 100% guarantees its member destroyers are 
> also called, outer to inner, first in first out, as part of the 
> destruction process. The thing is that when you store a "class 
> reference" then you call the destructor of the reference 
> itself. References being glorified pointers, it basically means 
> it does nothing.

Are you implying that in following code snippet:

class A { ~this() { ... } }
class B { A a; ~this() { ... } }

destructor of A will be always called after B, so "a" member is 
always accessible in B's dtor?


More information about the Digitalmars-d-learn mailing list