Why is the constructor of B called?
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Sep 23 15:25:04 PDT 2015
On 09/23/2015 02:25 PM, tcak wrote:
> On Wednesday, 23 September 2015 at 21:14:17 UTC, Adam D. Ruppe wrote:
>> On Wednesday, 23 September 2015 at 21:08:37 UTC, tcak wrote:
>>> I wouldn't expect B's constructor to be called at all unless "super"
>>> is used there.
>>
>> "If no call to constructors via this or super appear in a constructor,
>> and the base class has a constructor, a call to super() is inserted at
>> the beginning of the constructor. "
>>
>>
>> from http://dlang.org/class.html#constructors
>>
>> the idea is to make sure the base class construction work is done too.
>
> Is there any way to prevent this behaviour?
No and I don't think it will ever be implemented. The derived class is
supposed to be used as the super class, which involves proper
construction of the super parts.
> Quickly checked whether Java acts in the same way. Answer is yes.
Same with C++. As discussed in the other thread, at least D allows
changing the order in which the super constructor is executed.
Ali
More information about the Digitalmars-d-learn
mailing list