1. 얕은 복사
- 얕은 복사는 객체가 가진 멤버들의 값을 새로운 객체로 복사하는 데
만약 객체가 참조 타입의 멤버를 가지고 있다면 참조값만 복사가 됨.
- e.g)
Person(const Person& s)
{
age = s.age;
name = s.name;
}
2. 깊은 복사
- 전체 복사
- 얕은 복사와는 달리 객체가 가진 모든 멤버(값과 참조형식 모두)를 복사하는 것.
- 객체가 참조 타입의 멤버를 포함할 경우 참조값의 복사가 아닌 참조된 객체 자체가 복사되는 것.
- e.g)
Person(const Person & s)
{
age = s.age;
name = new char [strlen(s.name)+1];
strcpy(name, s.name);
}
-> name 객체가 참조형이기 때문에 새로운 공간을 만든 후 값을 넣고 있다.
-> 따라서 복사본과 원본의 메모리 참조 공간 자체가 다르기 때문에 같은 값을 참조하는 것이 아닌
각자의 값을 참조하고 있다.
'Language > C++' 카테고리의 다른 글
[C++] 전처리기 (0) | 2020.12.13 |
---|---|
[C++] 입출력 속도 (0) | 2020.12.13 |
[C++] 스마트 포인터 (0) | 2020.12.13 |
[C++] 가상함수 (0) | 2020.12.13 |
[C++] 선언과 정의 (0) | 2020.12.13 |