컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자
항목 6 : 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 . 클래스의 복사 대입 연산자 , 복사 생성자를 그야말로 완벽하게 막기 위해서는 private 으로 선언해주고 정의를 빼면 된다 . (friend class 에서도 쓸 수 없게 된다 . 만약에 사용하려 한다면 컴파일 단계에서 링크에러 발생 ). 좀더 일찍 컴파일 단계에서 에러를 검출하고 싶다면 , 기반클래스에서 복사 생성자 & 복사 대입 연산자를 private 선언 해준 뒤 파생클래스에서 private 상속까지 하면 절대 사용하지 못한다 . 1 2 3 4 5 6 7 8 class HomeForSale { public : private : HomeForSale( const HomeForSale & ); //선언만 달랑 있습니다. HomeForSale & operator = ( const HomeForSale & ); //요 방식으로, 복사 생성자 와 대입 연산자를 사용할 수 없도록 막아버린다. }; Colored by Color Scripter cs 표준 라이브러리 구현환경에서 ios_base, basic_ios, sentry 가 이 방식으로 선언되었다 1 2 3 4 5 6 7 8 9 10...