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 프로그래밍 언어 안드레이 알렉산드레스쿠(Andrei Alexandrescu) 또는 알리 체렐리(Ali Çehreli) D 프로그래밍 언어 튜토리얼.특히, 이 장 Ali의 책에서는 수업을 할당하고 복사하는 방법을 포함하여 수업에 대해 설명합니다.
제휴하지 않습니다 StackOverflow