unittest affects next unittest

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Aug 5 10:41:04 PDT 2014


On Tuesday, 5 August 2014 at 15:39:55 UTC, sigod wrote:
> On Saturday, 2 August 2014 at 06:46:04 UTC, Jonathan M Davis 
> via Digitalmars-d-learn wrote:
>> On Fri, 01 Aug 2014 23:09:37 +0000
>> sigod via Digitalmars-d-learn 
>> <digitalmars-d-learn at puremagic.com> wrote:
>>
>>> Code: http://dpaste.dzfl.pl/51bd62138854
>>> (It was reduced by DustMite.)
>>>
>>> Have I missed something about structs? Or this simply a bug?
>>
>> Don't do this with a member variable:
>>
>> private Node * _root = new Node();
>>
>> Directly initializing it like that sets the init value for 
>> that struct, and
>> that means that every struct of that type will have exactly 
>> the same value for
>> _root, so they will all share the same root rather than having 
>> different
>> copies. You need to initialize _root in the constructor.
>>
>> - Jonathan M Davis
>
> So, it's a static initialization? Documentation didn't mention 
> it. (In class' section only 2 sentences about it and none in 
> struct's section.)
>
> This is different from many languages (C#, Java... don't know 
> about C and C++). What was the reason to make this 
> initialization static?

It's a consequence of the fact that every type in D has a default 
initializer which is known at compile time.


More information about the Digitalmars-d-learn mailing list