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.

Reply via email to