특수 멤버 함수

특수 멤버 함수컴파일러가 자동으로 생성하는 클래스(또는 구조체) 멤버 함수입니다. 이러한 함수는 기본 생성자, 소멸자, 복사 생성자 및 복사 할당 연산자, 이동 생성자 및 이동 할당 연산자입니다. 클래스가 하나 이상의 특수 멤버 함수를 정의하지 않는 경우 컴파일러는 사용되는 함수를 암시적으로 선언하고 정의할 수 있습니다. 컴파일러에서 생성된 구현을 기본 특수 멤버 함수라고 합니다. 컴파일러는 필요하지 않은 경우 함수를 생성하지 않습니다.

= 기본 키워드(keyword) 사용하여 기본 특수 멤버 함수를 명시적으로 선언할 수 있습니다. 이렇게 하면 컴파일러가 함수가 전혀 선언되지 않은 것과 같은 방식으로 필요한 경우에만 함수를 정의합니다.

경우에 따라 컴파일러는 삭제된 특수 멤버 함수를 생성할 수 있습니다. 이 함수는 정의되지 않았으므로 호출할 수 없습니다. 클래스의 다른 속성을 고려할 때 클래스의 특정 특수 멤버 함수에 대한 호출이 의미가 없는 경우에 발생할 수 있습니다. 특수 멤버 함수의 자동 생성을 명시적으로 방지하려면 = delete 키워드(keyword) 사용하여 삭제된 것으로 선언할 수 있습니다.

컴파일러는 다른 생성자를 선언하지 않은 경우에만 인수를 사용하지 않는 생성자인 기본 생성자를 생성합니다. 매개 변수를 사용하는 생성자만 선언한 경우 기본 생성자를 호출하려는 코드로 인해 컴파일러에서 오류 메시지가 생성됩니다. 컴파일러에서 생성된 기본 생성자는 개체의 간단한 멤버별 기본 초기화를 수행합니다. 기본 초기화는 모든 멤버 변수를 확정되지 않은 상태로 둡니다.

기본 소멸자가 개체의 멤버별 소멸을 수행합니다. 기본 클래스 소멸자가 가상인 경우에만 가상입니다.

기본 복사 및 이동 생성 및 할당 작업은 멤버별 비트 패턴 복사 또는 비정적 데이터 멤버의 이동을 수행합니다. 이동 작업은 소멸자 또는 이동 또는 복사 작업이 선언되지 않은 경우에만 생성됩니다. 기본 복사 생성자는 복사 생성자가 선언되지 않은 경우에만 생성됩니다. 이동 작업이 선언된 경우 암시적으로 삭제됩니다. 기본 복사 할당 연산자는 복사 할당 연산자가 명시적으로 선언되지 않은 경우에만 생성됩니다. 이동 작업이 선언된 경우 암시적으로 삭제됩니다.

참고 항목

C++ 언어 참조