5 - 10 - nil 이런 리스트가 있을 때
3 -
5 - 10 - nil
4 -
이렇게 3이랑 4 둘다 5에게 연결시키려면 Box<T>말고 Rc<T>를 쓰라는데
책에는 Rc<List>를 복제한다고 나와있는데
복제를 해버리면
3 - 5- 10 - nil
4 - 5- 10 -nil
이렇게 2개가 생겨버리는거 아님??
5 - 10 - nil 이런 리스트가 있을 때
3 -
5 - 10 - nil
4 -
이렇게 3이랑 4 둘다 5에게 연결시키려면 Box<T>말고 Rc<T>를 쓰라는데
책에는 Rc<List>를 복제한다고 나와있는데
복제를 해버리면
3 - 5- 10 - nil
4 - 5- 10 -nil
이렇게 2개가 생겨버리는거 아님??
clone이 뭘 하는지는 구현따라 다름 Clone은 트레잇일 뿐임
Copy같은 경우는 메모리의 값을 그대로 복사
그러니까 Box나 Rc나 둘다 포인터인데 용도에 따라서 Clone을 다르게 구현해놨다고 볼수있지
보통 일반적으로 Clone이라 생각하는건 Clone이라는 derive 매크로가 출럭하는 구헌임(타입의 모든 필드를 clone해서 같은 타입의 같은 필드에 넣는다)
Rc의 clone은 &레퍼런스를 복사하는거하고 비슷한 느낌임 대신 라이프타임은 신경쓸필요가 없지
Box는 포인터 복제가 아니고 걍 소유하는거고?
포인터 내용 복사한다음에 새로 포인터 만드는거임
? Box가 복제한담에 새로 포인터 만든다구?
해당 댓글은 삭제되었습니다.
cpp 잘모름 ㅇㅇ;
안에 있는 List를 복제하는게 아니라 포인터를 복제하면서 내부에서 카운터 하나 올리는거임
Box를 쓰는 경우는 포인터를 복제하지 않고 소유해버리니까 컴파일 에러나는거고?
Rc 복사하면 같은 값 가르킴