Search code examples
referencedownershipcopy-assignment

Will objects be copied in assignment in D?


When I assign an object in D, will it be copied?

void main() {
    auto test = new Test(new Object());
    tset.obj;
}

class Test {
    public Object obj;

    public this(Object ref origObj) {
        obj = origObj; // Will this copy origObj into obj, or will origObj and obj point to the same data? (Is this a valid way to pass ownership without copying the object?)
    }
}

Solution

  • Only the reference is copied, the object itself isn't duplicated. You can explicitly duplicate the object by using .dup though.