C++ 얕은 복사와 깊은복사

Intro

얕은 복사와 깊은 복사의 차이

얕은 복사 깊은복사

기존 객체와 같은 값을 가진 객체를 복사할때 값 형식이냐 참조 형식이냐에 따라 얕은 복사와 깊은 복사의 개념이 나누어진다.

각각의 방법에 따라 결과 값이 달라질 수 있으므로 유의해야한다.

예제

얕은 복사 (Shallow Copy)

실행 결과

1

코드에서 name은 주소값을 참조하기때문에 복사를 하였더라도 같은 주소를 참조하게된다.

그렇기 때문에 name을 바꿨을때 A,B객체의 name값이 둘다 바뀌게된다.

또한 소멸자가 호출될 때 name은 같은 메모리를 참조하기때문에 한번 delete된 메모리를다시 delete하기때문에 오류가 발생한다.

3

깊은 복사 (Deep Copy)

실행 결과

2

이번에는 복사 생성자에서 새로운 메모리를 할당하기때문에 원본과 복사본의 참조 공간이 다르며 소멸자도 오류가 발생하지않는다.

4

참고 자료

https://wonjayk.tistory.com/256

https://itmining.tistory.com/51

댓글남기기