On Sunday 14 November 2010 03:08:49 spir wrote: > Hello, > > > There seems to be 2 main differences between structs & classes: > 1. structs instances are direct values, implement value semantics; while > class instances are referenced (actually "pointed") 2. classes can be > subtyped/subclassed in a simple way; structs cannot be really subtyped -- > but there is the "alias this" hack
The main thing to remember between structs and classes is that classes are polymorphic. If you want polymorphism, use a class. If you don't use a struct. Now, if you want a type which is _always_ a reference, then you should probably choose a class, but it's quite easy to have a struct which is a reference type by having its member variables are on the heap and don't get deep copied be a postblit constructor. It is more immediately clear, though, that a class is a reference type. You can get more nuanced on the reasons why you should pick a struct or a class, but polymorphism is really what it generally comes down to. If you never intend to subclass it or have it implement interfaces, then it should probably be a struct. - Jonathan M Davis