On Thursday, 24 September 2015 at 01:01:09 UTC, Nicholas Wilson wrote:
On Wednesday, 23 September 2015 at 21:25:15 UTC, 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?

Quickly checked whether Java acts in the same way. Answer is yes.

You might be able to swap out the vtbl entry for a stub call it and trick the compiler and swap it back, but...

Urgh...

If you can modify the base class, and you really need it, you can check the dynamic type:

class Base {
    this() {
        if(!cast(Base) this) return;
        // do the initialization
    }
}

Reply via email to