On Tuesday, 24 February 2015 at 12:16:43 UTC, Tobias Pankrath wrote:
On Tuesday, 24 February 2015 at 12:05:51 UTC, amber wrote:
Hi,

Is it possible in D to have inheritance using value types, i.e. structs?

No runtime polymorphism, but a kind of sub typing via alias this.

struct S { void foo() { writeln("S.foo"); }
struct T { S s; alias s this; }

T t;
t.foo(); // prints S.foo


Also I don't quite understand how copy ctors work in D. Do I need to implement opAssign(S other) {}, or this(this) {} and what's the difference between these two?

If available, opAssign will be used in an assignment like x = y;
You're custom opAssign can take arbitrary parameter types, so typeof(y) does not have to be typeof(x).

postblit is used for copy construction. This could be assignment if no opAssign is provided (not sure about this), but also e.g. passing parameter by value or returning from a functions

Thank you Tobias I get it now.

/amber

Reply via email to