[c++] 디폴트 및 삭제된 함수 (Defaulted and deleted functions)

C++에서 디폴트 및 삭제된 함수(defaulted and deleted functions)는 클래스 멤버 함수의 특별한 형태를 말합니다. 이러한 함수들은 클래스의 기본 동작을 수정하고 클래스의 행동을 명확하게 지정하는 데 유용합니다.

디폴트 함수(Default Functions)

디폴트 함수는 명시적으로 정의되지 않은 멤버 함수를 가리킵니다. 즉, 컴파일러가 자동으로 그 함수를 생성합니다. 주로 디폴트 생성자, 복사 생성자, 이동 생성자, 복사 할당 연산자, 이동 할당 연산자가 있습니다.

class MyClass {
public:
    MyClass() = default;  // 디폴트 생성자
    MyClass(const MyClass&) = default;  // 복사 생성자
    MyClass(MyClass&&) = default;  // 이동 생성자
    MyClass& operator=(const MyClass&) = default;  // 복사 할당 연산자
    MyClass& operator=(MyClass&&) = default;  // 이동 할당 연산자
};

위와 같이 = default를 사용하여 디폴트 함수를 명시할 수 있습니다.

삭제된 함수(Deleted Functions)

삭제된 함수는 호출을 제한하는 데 쓰입니다. 특정 함수를 사용할 수 없도록 하려는 경우에 삭제된 함수를 사용할 수 있습니다.

class MyClass {
public: 
    void doSomething() = delete;  // doSomething 함수의 사용을 삭제
};

위와 같이 = delete를 사용하여 함수를 삭제할 수 있습니다.

이러한 디폴트 및 삭제된 함수는 C++11부터 도입되었으며, 코드의 가독성과 유지 보수성을 향상시키는 데 도움을 줍니다.

디폴트 및 삭제된 함수에 대한 자세한 내용은 cppreference에서 참고할 수 있습니다.