LANG/C++

[C++]05-2.'깊은 복사'와 '얕은 복사'

혀니리리 2023. 5. 13. 13:02
728x90

디폴트 복사 생성자의 문제점

얕은 복사 - 멤버변수가 힙의 메모리공간을 참조하는 경우에 문제가 됨

일반적인 실행 결과 = 문자열이 한 번만 출력됨.

얕은 복사 때문에 발생하는 문제

 

깊은복사를 하면 객체 별로 각각 문자열을 참조하므로 위와 같은 문제 해결 가능.

Person(const Person& copy):age(copy.age)
{
	name = new char[strlen(copy.name) + 1];
    strcpy(name, copy.name);
}

위 코드가 하는 일

-멤버변수 age의 멤버 대 멤버 복사

-메모리 공간 할당 후 문자열 복사, 할당된 메모리의 주소 값을 멤버 name에 저장

728x90