On Monday, 24 July 2017 at 17:42:30 UTC, Steven Schveighoffer
wrote:
On 7/24/17 11:45 AM, Houdini wrote:
On Monday, 24 July 2017 at 15:41:33 UTC, Steven Schveighoffer
wrote:
Because types with inheritance generally don't work right if
you pass by value (i.e. the slicing problem).
structs don't support inheritance or virtual functions, so
they can be safely passed by value.
But in C++, we pass them by reference also to avoid copies
(const &).
The potential polymorphic usage is not the only point to
consider.
In C++ class and struct are pretty much interchangeable, so
technically, class is a wasted keyword for default visibility.
In D, I would use classes for any time I need polymorphism, and
use structs otherwise.
-Steve
It has also the nice property that porting code from Java/C# is
actually really easy when using classes as it has more or less
the same semantic. When porting code from C and C++ it is often
better to use structs.