オブジェクトはDで割り当てにコピーされますか?
-
21-12-2019 - |
質問
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プログラミング言語チュートリアル。特に、この章アリの本のの割り当て方法を含むクラスについて説明します。それらをコピーしてください。
所属していません StackOverflow