라벨이 Destructor인 게시물 표시

[Effective C++ 3판] Chapter 2. 생성자, 소멸자 및 대입 연산자 (항목 5~12)

Chapter 2 . 생성자, 소멸자 및 대입 연산자 항목 5 : C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자. 항목 6 : 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자. 이러한 것과 관련된 규칙으로서 rule of three/five/zero 라는 것이 있다. 아래 링크 참조. http://en.cppreference.com/w/cpp/language/rule_of_three https://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming) [ 정리해 두고 싶은 것 & 추가적인 사항 ] // C++11에서는 =delete를 사용하면 되긴 하지만, 책을 읽다가 인상깊어서 남겨본다. // 부스트에도 비슷하게 noncopyable이라는게 있다고 한다. class UnCopyable { protected: UnCopyable() {} ~UnCopyable() {} private: // 선언만 함으로서 friend에 대해서도 안전성 확보. UnCopyable(const UnCopyable&); UnCopyable& operator=(const UnCopyable&); }; class Example : private UnCopyable { }; [ 이것만은 잊지 말자! ] - 컴파일러는 경우에 따라 클래스에 대해 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 암시적으로 만들어 놓을 수 있습니다. (C++11에서는 이동 생성자, 이동 대입 연산자가 암시적으로 생성될 수 있다. - 컴파일러에서 자동으로 제공하는 기능을 허용치 않으려면, 대응되는 멤버 함수를 private로 선언한 후에 구현은 하지 않은 채로 두십시오. Upcopyable과 비슷한 기본 클래스를 쓰는 것도 한 방법입니다. (C++11에서는 =delete 를 활용하자.) 항목 7...