C++

복사 생성자, 복사

cheesecrust1008 2022. 5. 17. 23:30

복사 생성자란, 자신과 같은 타입의 객체를 매개변수로 받는 생성자이다. 

복사생성자가 없으면 자동으로 모든 멤버변수의 값을 복사하는 디폴트 복사생성자가 생성된다. 

복사생성자의 선언은 객체를 인자로 받아서 값을 뽑아내서 객체를 만들어준다.

 

깊은복사와 얕은복사 

얕은 복사는 값만을 복사하는 것이다 따라서 주소를 공유하며, 변수명만 두가지 인것이 되므로 값을 고치게 되다면 두개의 변수안의 값이 다 바뀌게 된다. 

 

따라서 서로 다른 주소로 값만등 가져오기 위해서는 깊은 복사를 해주어야한다.

 

문자열의 깊은 복사를 할떄에는 strncpy 를 활용한다.

// 문자열을 받을 때에는 변환이 되며 안되므로 const로 설정 해주어야 한다. const char * 이런 식으로 정의 해주어야 한다. 

 

요약하자면 const 선언이 되지않은 레퍼런스/포인터에 const 레퍼런스.포인터를 넣을 수 없다.