C++ 14일차
포인터의 깊은 복사와 얕은 복사
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> #include <cstdio> using namespace std; int main(void) { int *a = new int(5); int *b = new int(3); *a = *b; //깊은 복사(값을 복사) : 주소의 값을 바꾼다. a = b; //얕은 복사(참조만 복사) : 주소를 바꾼다. delete a; delete b; return 0; } | cs |
위의 10번째 줄을 보았을때 *a = *b가 있다.
*a = *b의 의미는 a라는 변수의 주소의 값을 b라는 변수의 주소의 값을 접근하여 *a는 *b값으로 바뀌게 된다. 이를 깊은 복사라 한다.
위의 11번째 줄을 보았을떄 a = b가 있다.
a = b의 의미는 a라는 변수의 주소를 b의 주소로 바꾼다. 따라서 a의 변수의 주소는 b의 변수의 주소와 같아지고 결국 값이 같아진다.
이를 포인터의 얕은 복사라고 한다.