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

Reply via email to