본문 바로가기

C++

C++ 14일차

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 *= new int(5);
    int *= new int(3);
 
    *= *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의 변수의 주소와 같아지고 결국 값이 같아진다.

이를 포인터의 얕은 복사라고 한다.



'C++' 카테고리의 다른 글

C++ 15일차  (0) 2018.06.17
C++ 13일차 동적 할당  (0) 2018.06.11
C++ 12일차  (0) 2018.06.10
C++ 11일차  (0) 2018.06.05
C++ 10일차  (0) 2018.06.05