deep copy랑 shallow copy공부하다가 잠깐 현타와서 계속 생각중인데
내가 지금은 그냥 공부단계라서 왜 필요한지 까지는 잘 모르겠는데 알려주라
지금 이해가 안가는게
class DC
복사생성자{}
int m_data = 0;
main:
DC dc
dc. m_data = 100;
DC Dc
Dc(dc);
dc는 100이 나오고
Dc는 0이 나오면서
얕은 복사가 되자나
근데 복사생성자를 지우거나 안에서 변수에 대입을 해주면 그때서야 바뀌는데
왜 이렇게 복잡하게 존재하는거임?
내가 따로 보는 책에서도 그렇고 정모띠도 그렇고 복사생성자가 굉장히 중요하다고 하는데
아직까진 얼마나 중요한지 잘 모르겠다
얕은복사랑 깊은복사를 정확히 모르고있는거같음
deep copy랑 shallow copy 좀만 더 공부해봐
c랑 자바에 비해서 너무 어렵노 c++ 개새끼
맞따 진정하고 책보고 다시 공부해야지 어휴
리스트에 배열 1000개 넣은 객체 여러개 넣으면 메모리가 어떻게 될까 이런거 생각해보셈
자바랑 딱히 다르지도 않음
당연한 거 아님..?? 내가 이해력이 딸리는건가
위에 님이 쓰신 코드에서 복사생성자가 쓰이는 부분이 없습니다. 선언과 동시에 DC Dc(dc); 이렇게 선언과 동시에 해줘야만 복사생성자가 실행이 되고, 님이 쓰신 것처럼 나눠적으면, 디폴트 생성자로 생성된 후, 디폴트 복사 대입 연산자로 dc의 정보가 Dc에 들어가는 겁니다. 복사생성자가 존재하는 이유는 만약 DC에 포인터 프로퍼티가 들어가 있으면 디폴트 복사생성자는 포인터 주소만 복사시킵니다. 그래서 dc를 Dc로 복사시켜주고 dc의 포인터 프로퍼티의 값을 바꾸면 Dc도 똑같이 바뀌게 됩니다. 같은 주소를 가리키고 있으니까요. 이렇게 디폴트 복사생성자가 했던 행위를 얕은 복사라 합니다. 이런 일이 없도록 복사생성자를 따로 정의해서 깊은 복사가 이뤄지도록 해야 합니다.