센로그

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

Effective/Effective C++

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

seeyoun 2024. 11. 13. 22:16

복사 생성이나 복사 대입연산이 아예 수행되면 안되는 경우도 있다

이럴 때는 실수로 사용하게 되어 컴파일러가 몰래 만들어내는 일이 없도록, 아예 사용을 금해버려야 한다.

  • 사용 안할 복사 생성자나 복사 대입연산자를 private 멤버로 선언하여, 외부에서 호출하지 못하도록 한다.
    • 이때, 선언만 하고 정의는 하지 않는다.
    • 정의를 해버리면 멤버 함수나 friend 함수에서 사용해버릴 수도 있기 때문이다.
  • 또는 delete 키워드를 사용하면 된다.
    • 불필요하거나 잘못된 사용을 방지하기 위해 특정 멤버 함수의 사용을 금지할 때 delete 키워드를 사용한다.

 


+) 책에서 ios_base 클래스도 private 복사 생성자 구현되어 있다고 해서 찾아봤다.

보다 최신 문법인 delete를 사용하고 있었다. (C++11 도입)

Comments