항목 6: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해버리자
·
STUDY/Effective C++
항목5를 보면 알 수 있다시피 컴파일러는 클래스에 대해 기본생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 암시적으로 만들 수 있다. 그러면 복사가 되지않게 복사 생성자 자체를 만들지 않을 수 없는걸까? 1. 해당 멤버함수를 private으로 선언 class HomeForSale { public: ... private: ... HomeForSale(const HomeForSale&); HomeForSale& operator=(const HomeForSale&); }; 결론은 컴파일러에서 자동으로 생성하는것을 방지하고자하는 멤버함수를 따로 private으로 선언만하고 구현을 하지않으면 되는일이다. 2. Uncopyable 상속 class Uncopyable { protected: Uncopyable()..