본문 바로가기
  • 쓸쓸한 개발자의 공부방

복사생성자2

[C++] 복사 생성자 (copy constructor), 얕은 복사 (Shallow Copy), 깊은 복사 (deep copy) 눈에 잘 드러나지 않는 자동 생성되는 코드를 이해하는 부분이 항상 까다롭다. 그 중 하나가 복사 생성자다. 대부분 자동으로 생성되는 복사 생성자를 사용하게 되고 큰 문제는 없다. (좀더 인텔리전트한 개발자가 되기 위해서) 몇몇 부분에서 성능 향상에 도움이 되는 복사 생성자 정의하는 포인트가 있다. 알아두면 정말 좋은 내용이다. copy constructor ( 복사 생성자 ) - 자신과 동일한 타입 한 개를 인자로 가지는 생성자 - 사용자가 복사 생성자를 만들지 않으면 컴파일러가 자동으로 제공한다. - 디폴트 복사 생성자다 (default copy constructor) - 모든 멤버를 복사 한다. #include class Point { public: int x; int y; Point() : x(0).. 2021. 8. 21.
[C++] Explicit 생성자 Explicit 생성자 explicit a. 명백한, 뚜렷한(clear), 명시적인 - 직접 초기화 (direct initialization) : OFile fi("a.txt");와 같이 '=' 없이 초기화 하는 것 - 복사 초기화 (copy initialization) : OFile f2 = "a.txt"; 와 같이 '=' 사용해서 초기화 하는 것 함수 인자 전달시 복사 초기화를 사용한다. foo("hello")를 보낸다는 것은 hello 이름으로 File이 error 없이 생성이 된다. 특정 클래스 설계시 복사 초기화를 사용하지 못하게 하는 것이 좋을 때가 있다. #include class OFile { FILE* file; public: OFile(const char* filename) { file.. 2021. 8. 20.