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

2022. 6. 23. 23:41·STUDY/Effective C++

항목5를 보면 알 수 있다시피 컴파일러는 클래스에 대해 기본생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 암시적으로 만들 수 있다.

 

그러면 복사가 되지않게 복사 생성자 자체를 만들지 않을 수 없는걸까?

 

1. 해당 멤버함수를 private으로 선언

 

class HomeForSale {
public:
	...

private:
	...
	HomeForSale(const HomeForSale&);
	HomeForSale& operator=(const HomeForSale&);
};

결론은 컴파일러에서 자동으로 생성하는것을 방지하고자하는 멤버함수를 따로 private으로 선언만하고 구현을 하지않으면 되는일이다.

 

2. Uncopyable 상속

class Uncopyable {
protected: 
	Uncopyable() {}//생성과 소멸 허용
	~Uncopyable() {}

private:
	Uncopyable(const Uncopyable&) //복사 방지
	Uncopyable& operator=(const Uncopyable&);
};
class HomeForSale: private Uncopyable {
...
};

아니면 기본 클래스인 Uncopyable 을 상속받으면 되는일이다. 좀 더 깔끔하긴하다.

이 Uncopyable이라는 클래스를 보면  생성과 소멸을 허용하는건 protected내에서 선언을 해준다. 

그리고 앞의 방법과 똑같이 방지가 되었으면 하는 멤버함수의 경우에는 private으로 선언을 한다. 

 

 

3. noncopyable 상속

Uncopyable과 같은 기능을 하나, 부스트 라이브러리안에 있는 클래스이다.

'STUDY > Effective C++' 카테고리의 다른 글

항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자  (0) 2022.08.17
항목 7: 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자  (0) 2022.06.25
항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자  (0) 2022.06.23
항목 4: 객체를 사용하기 전에 반드시 그 객체를 초기화하자  (0) 2022.06.23
항목 3: 낌새만 보이면 const를 들이대 보자!  (0) 2022.06.18
'STUDY/Effective C++' 카테고리의 다른 글
  • 항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자
  • 항목 7: 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자
  • 항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자
  • 항목 4: 객체를 사용하기 전에 반드시 그 객체를 초기화하자
wise_
wise_
  • wise_
    WHY'S BlOG
    wise_
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • PROJECT (19)
        • 젯슨나노 프로젝트 (0)
        • 유니티 (9)
      • STUDY (37)
        • 코딩문제 (13)
        • 알고리즘 (0)
        • Effective C++ (14)
        • 유니티 (8)
        • 언리얼 (2)
      • ERROR (7)
        • 오류덩어리들 (7)
      • REVIEW (0)
      • LIFE (0)
        • 작고 소중한 내 일상 (0)
        • 작고 귀여운 내 취미 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임개발
    unity
    윈터데브캠프
    c#
    코딩
    깊이우선탐색
    C++
    인디게임
    알고리즘
    언리얼
    귀여운
    error
    여우는오늘도친구를구한다
    유니티
    null
    백준
    힐링
    플로이드와샬
    1인개발
    스마일게이트
    wisen
    모바일게임
    와이즌
    퍼즐게임
    ==
    힐링게임
    개발
    게임
    TheFoxSeeksFriend
    개발일지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
wise_
항목 6: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해버리자
상단으로

티스토리툴바