On Wednesday, 2 October 2019 at 17:22:40 UTC, Just Dave wrote:
I was reading the C++ to D page, and came across this little
bit about when to call the base class constructor:
Isn't there some inherent danger of not calling the base
constructor first?
The object's fields are pre-initialized before invoking the
constructor, and not undefined as in C++, so probably not really
dangerous.
"It's superior to C++ in that the base constructor call can be
flexibly placed anywhere in the derived constructor."
That formulation is s bit suboptimal, as the emphasis should be
on '*can* be flexibly placed anywhere' - if you don't specify an
explicit `super()` call, it's implicitly inserted at the
beginning of the derived ctor, so a base ctor is always invoked
at some time when constructing a derived object.
I don't think there are lots of use cases for deferring the super
call, but it might be useful for logging purposes and such.