C++/개념(Concept)

C++ 개념: 특수 멤버 함수(special member function)

kim선달 2020. 11. 16. 00:24
Select Language

특수 멤버 함수(Special Member Function)


1. 설명

 클래스의 다음과 같은 멤버 함수들을 말합니다.

1. 기본 생성자(constructo)

2. 소멸자(destructor)

3. 복사 생성자 및 복사 할당(assignment)자

4. 이동 생성자 및 이동 할당자

 

 

소멸자는 명시적(explicitly)으로 삭제하지 않는 한, 무조건 생성됩니다.

소멸자를 제외한 5가지 항목은, 사용자가 명시적으로 삭제하지 않아도 암시적으로(implicitly) 삭제되는 경우가 있습니다.


2. 예시

ㄱ. 기본 생성자

#include <iostream>

class foo{
 public:
};

int main(){
  auto f = foo();
  foo f2;
  foo f3();
  
  return 0;
}

위 예시 처럼, 기본 생성자는 일반적으로 항상 자동으로 생성됩니다.

 

기본 생성자가 암시적으로 자동 삭제되는 경우는 다음과 같습니다.

1. 모든 사용자 정의 생성자가 인자 없이 호출될 수 없음

2. 기본 초기화자(default initializer) 없이 반드시 초기화가 필요한 멤버가 있음

  * 상수(const), 레퍼런스(reference)가 여기에 속합니다.

3. 기본 생성자가 없는 멤버가 있음(여기에 적힌 이유들로 인해)

4. 기반 클래스가 기본 생성자가 없음

5. 기반 클래스가 기본 소멸자가 없음

 

 


같이 보면 좋은 글