On Tuesday, 4 February 2014 at 20:11:05 UTC, Chris Williams wrote:
On Tuesday, 4 February 2014 at 13:01:28 UTC, Dicebot wrote:
I find structs completely superior to classes as design base and only resort to latter if find myself in need of polymorphic behavior.

A person who is using Phobos has no option to switch to classes when they find that they need polymorphic behavior, except by copy-pasting into a new source file and revising the Phobos code outside of Phobos.

"alias this" for the rescue again. You can a struct private member of a class and alias it. If you want to override its methods in class hierarchy you can generated wrapper methods in class via D reflection capabilities and override those.

But opposite is much harder, and issues with std.typecons.scoped show it.

If there aren't really any speed or size advantages of significance, then what are you considering to make structs superior? (I ask since I would rather make an argument for struct-typing in the article, so people understand the decision.)

Speed advantage can be huge on certain types of programs. Each class is a reference type - this is first extra indirection. On top of that every non-final class call requires virtual table lookup - this is second extra indirection. And indirections can cost a lot.

I have also mentioned another important concern - you can easility turn struct into reference type by declaring pointer to struct. You can't easily turn class into value type.

Reply via email to