Do classes require explicit constructors?

Richard (Rikki) Andrew Cattermole richard at cattermole.co.nz
Sat Feb 14 15:54:23 UTC 2026


On 15/02/2026 4:50 AM, Brother Bill wrote:
> On Saturday, 14 February 2026 at 15:45:20 UTC, Richard (Rikki) Andrew 
> Cattermole wrote:
>> On 15/02/2026 4:42 AM, Brother Bill wrote:
>>> Is this expected behavior, that is, we always need to create our 
>>> constructors, no free constructor is built for us by the D compiler?
>>
>> Yes currently.
>>
>>> If so, this is a clear departure from C# and Eiffel, where one gets a 
>>> free constructor if no explicitly declared constructors.
>>
>> D's classes were based off of Java's.
>>
>> I want some changes to them, constructors also don't inherit.
> 
> Eiffel may be the only language that supports inheriting constructers.
> In Eiffel, a constructor is just another method, that is marked as a 
> constructor in "create" clause.  As all methods are inheritable by 
> default in Eiffel, constructors can be inherited there.

Swift does it too.

There is a bunch of "fun" rules surrounding it though.

I think we can simplify it right down though.

>> They are massive pain for exceptions.
> 
> Why are they a massive pain?  Please explain.

You have to manually write the constructors for every exception you want 
to declare yourself.

Normally with IDE's you'd have assistance and it would be done 
automatically, but that isn't normal for D.

There are multiple parameters. Not a joy.



More information about the Digitalmars-d-learn mailing list