Language/C++

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

마탁이 2020. 12. 13. 17:02

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