What would break if class was merged with struct
Ola Fosheim Grøstad via Digitalmars-d
digitalmars-d at puremagic.com
Sun May 28 07:30:00 PDT 2017
On Sunday, 28 May 2017 at 12:31:35 UTC, Iain Buclaw wrote:
> I said it all in one breath, so you could leave it up to
> interpretation whether they applauded the fact that there is a
> separation in semantics, or whether there is no multiple
> inheritance in D (except via interfaces).
>
> When asking one person over dinner later about what they felt
> was wrong about struct/class in C++, I got the impression that
> because there's almost no distinction between the two, class
> seems more like a misfeature of C++.
Well, class and struct is semantically the same in C++. The only
difference is that you don't have private and protected on
structs. So the distinction is historical, to quote
cppreference.com: «The keywords are identical except for the
default member access and the default base class access.»
> You could say that C++ should have stuck to one type, instead
> of having two.
Struct and class is one type in C++. The difference is in the
syntax where the grammar does not allow access protection for the
struct keyword. So not semantical, but syntactical.
> And because in D we make a very clear distinction, that
> justifies the reason to have both struct and class.
But you don't make a very clear distinction in D. If struct was
a pure value type and mapped to pure valued tuples, then you
might have a justification for it. From a type-system point of
view the distinction makes no sense to me.
More information about the Digitalmars-d
mailing list