C++ 얕은 복사와 깊은복사
Intro
얕은 복사와 깊은 복사의 차이
얕은 복사 깊은복사
기존 객체와 같은 값을 가진 객체를 복사할때 값 형식이냐 참조 형식이냐에 따라 얕은 복사와 깊은 복사의 개념이 나누어진다.
각각의 방법에 따라 결과 값이 달라질 수 있으므로 유의해야한다.
예제
얕은 복사 (Shallow Copy)
실행 결과
코드에서 name은 주소값을 참조하기때문에 복사를 하였더라도 같은 주소를 참조하게된다.
그렇기 때문에 name을 바꿨을때 A,B객체의 name값이 둘다 바뀌게된다.
또한 소멸자가 호출될 때 name은 같은 메모리를 참조하기때문에 한번 delete된 메모리를다시 delete하기때문에 오류가 발생한다.
깊은 복사 (Deep Copy)
실행 결과
이번에는 복사 생성자에서 새로운 메모리를 할당하기때문에 원본과 복사본의 참조 공간이 다르며 소멸자도 오류가 발생하지않는다.
댓글남기기