카테고리 없음

[Effective C++] Item6_컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자

해달 2018. 1. 25. 22:44

Item6_컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자

챕터 핵심 내용

  • 컴파일러에서 자동으로 제공하는 기능을 허용하지 않으려면, 대응되는 멤버 함수를 private으로 선언한 후에 구현을 하지 말자.

- 컴파일러에서 자동으로 제공하는 기능을 허용하지 않으려면, 대응되는 멤버 함수를 private으로 선언한 후에 구현을 하지 말자

  • 사본을 만드는 행위가 필요하지 않다면 복사 생성자와 복사 대입 연산자를 private 접근으로 만들어 버리자.
  • 프렌드 함수의 접근도 막으려면 선언만 하고 구현을 하지 말자.
  • 링크 시점 오류를 컴파일 시점 오류로 옮기고 싶다면 인터페이스 형식처럼 만들어 private 상속을 이용하는 방식으로 구현할 수 있다.

후기(postscript)

C++11부터는 클래스 메소드에 delete키워드를 넣어 명시적으로 삭제임을 표기할 수 있다. 예를 들면 A(const A&) = delete; 식이다.