On Wednesday, 23 September 2015 at 13:14:54 UTC, Steven
Schveighoffer wrote:
You can do it in C++ via initializers too, just not as useful.
D still enforces sound construction.
The key quality for a good OO paradigm is that you can
independently modify super-classes and sub-classes in an
encapsulated way without knowing the concrete implementation of
the other.
Like most languages C++ and D does not ensure sound object
construction, but C++ is a bit better than D. When you allow
super() to be called in arbitrary locations then modifications of
ancestor classes are much more likely to cause issues for
subclasses. So that approach does not scale.