3월 29, 2016

constructor/destructor와 assignment operator가 (자동으로) implicit define되지 않는 경우.

  • default constructor
    • 하나라도 직접 정의한 constructor가 있을 때
    • 클래스 멤버 중에 default constructing이 불가능한 멤버가 있을 때( ex. reference, const object 등)
  • copy constructor
    • 직접 정의한 copy constructor(class T에 대해 T, T&, const T&를 받는 constructor)가 하나라도 있을 때
    • 클래스 멤버 중에 copy constructing이 불가능한 멤버가 있을 때( ex. reference 등)
    • 직접 정의한 move constructor 나 move assignment op가 있을 때
  • copy assignment operator
    • 직접 정의한 copy assignment op(class T에 대해 T, T&, const T&를 받는 op)가 하나라도 있을 때
    • 클래스 멤버 중에 자동으로 assign이 불가능한 멤버가 있을 때( ex. reference, const object 등)
    • 직접 정의한 move constructor 나 move assignment op가 있을 때
  • destructor
    • 직접 정의한 destructor가 있는 경우
  • move constructor
    • 직접 정의한 move constructor가 있는 경우
    • 클래스 멤버 중에 move가 불가능한 멤버가 있는 경우( ex. deleted/inaccessible/ambiguou 등)
    • 직접 정의한 copy constructor, copy assignment op, destructor, move assignment op가 있는 경우
  • move assignment operator
    • 직접 정의한 move assignment op가 있는 경우
    • 직접 정의한 copy constructor, copy assignment op, destructor, move constructor가 있는 경우



references

댓글 없음:

댓글 쓰기