센로그
[EC++] 6. 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 본문
Effective/Effective C++
[EC++] 6. 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자
seeyoun 2024. 11. 13. 22:16복사 생성이나 복사 대입연산이 아예 수행되면 안되는 경우도 있다
이럴 때는 실수로 사용하게 되어 컴파일러가 몰래 만들어내는 일이 없도록, 아예 사용을 금해버려야 한다.
- 사용 안할 복사 생성자나 복사 대입연산자를 private 멤버로 선언하여, 외부에서 호출하지 못하도록 한다.
- 이때, 선언만 하고 정의는 하지 않는다.
- 정의를 해버리면 멤버 함수나 friend 함수에서 사용해버릴 수도 있기 때문이다.
- 또는 delete 키워드를 사용하면 된다.
- 불필요하거나 잘못된 사용을 방지하기 위해 특정 멤버 함수의 사용을 금지할 때 delete 키워드를 사용한다.
+) 책에서 ios_base 클래스도 private 복사 생성자 구현되어 있다고 해서 찾아봤다.
보다 최신 문법인 delete를 사용하고 있었다. (C++11 도입)
'Effective > Effective C++' 카테고리의 다른 글
[EC++] 8. 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2024.11.16 |
---|---|
[EC++] 7. 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2024.11.16 |
[EC++] 5. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 (2) | 2024.11.13 |
[EC++] 4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자 (0) | 2024.11.13 |
[EC++] 3. 낌새만 보이면 const를 들이대 보자! (8) | 2024.11.13 |
Comments