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
}
}