Shallow Copy(2)
-
[C#] 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) + ICloneable 인터페이스
*이 글은 책을 바탕으로 공부한 글입니다. C#의 클래스 부분을 공부하고 있었다. 어떤 객체지향언어를 배우든 클래스와 생성자란 개념이 나왔고, 이것은 익숙하게 알고 있는 내용이었다. 이번에 정리할 글인 얕은 복사와 깊은 복사 또한 잘 알고 있는 내용이었지만, 복사 생성자를 사용할 일이 나에겐 잘 없었다. 그래서 나중에 막힘없이 사용하기 위해 이렇게 글을 포스팅할까 한다. 그 전에 참고로 알아두면 좋은 지식을 먼저 보자. C#에도 종료자(소멸자)는 존재한다. 나는 C#에 생성자만 존재하고 소멸자는 없는 줄 알았다. 하지만 존재했다. class Monster { ~Monster() // 소멸자 { ... } } 생성자와 다르게 오버로딩이 불가능하고, 매개변수를 받지 않는다는 점까지 C++의 소멸자와 성질이 ..
2022.03.18 -
[C++] 복사 생성자(Copy constructor), 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy)
*을 보며 공부하여 정리한 글입니다. 1. 복사 생성자(Copy constructor) 객체를 복사하여 생성할 때 호출되는 생성자를 말한다. 사용자가 따로 넣지 않을 경우, 컴파일러가 자동적으로 디폴트 복사 생성자를 삽입해준다. class Monster { char* name; int hp; int damage; public: Monster(const Monster& copyMonster); // 복사 생성자 ... }; 함수 내부에서, 받은 인자의 값을 변경할 일이 없다면 다음과 같이 정의하는 것이 더 안전하다. Moster(const Monster& copyMonster); 즉, 다른 객체의 상수 레퍼런스를 매개변수로 받는다. const 이기 때문에 복사 생성자 내부에서 매개변수로 가져온 참조 데이터..
2022.02.09