質問

Dにオブジェクトを割り当てるとコピーされますか?

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?)
    }
}
.

役に立ちましたか?

解決

参照のみコピーされ、オブジェクト自体は重複していません。.dupを使用してオブジェクトを明示的に複製できます。

他のヒント

クラスは参照型であるため、

がある場合
Object o;
.

oは、実際のObjectではなくObjectへの参照であるため、コピーするだけで参照をコピーします。ポインタと同じようです。

auto a = new int;
*a = 5;

auto b = a;
assert(a is b);
assert(*a == *b);

*b = 5;
assert(*a == 5);
.

私は読むことを読むことができます D Programming Language によってAndrei AlexandRescuまたはAliÇehreliの Dプログラミング言語チュートリアル。特に、この章アリの本のの割り当て方法を含むクラスについて説明します。それらをコピーしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top