특수 멤버 함수(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. 기반 클래스가 기본 소멸자가 없음
같이 보면 좋은 글
'C++ > 개념(Concept)' 카테고리의 다른 글
True sharing / False sharing : std::hardware_..._interference_size (0) | 2021.08.30 |
---|---|
deleted 함수와 이동 연산의 overload resolution (0) | 2021.05.30 |
C++ 개념: 기본 타입(fundamental types) (0) | 2020.11.11 |
C++ 개념: 특수 멤버 함수 (0) | 2020.11.11 |