문제

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의 책에서는 수업을 할당하고 복사하는 방법을 포함하여 수업에 대해 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top