지금까지 클래스의 다양한 생성자와 연산자에 대해서 배웠다. 이들은 따로 정의하지 않으면 각각 디폴트 함수들이 호출된다. 이를 명시적으로 표현하는 방법이 있다. default와 delete를 이용하면 된다. default는 컴파일러가 제공하는 생성자를 이용하겠다는 뜻이고, delete는 특정 함수를 사용하지 않겠다는 뜻이다.
class Someclass
{
public:
Someclass(Someclass &&);
Someclass() = default; // 컴파일러가 생성한 기본 생성자 사용.
Someclass(const Someclass &) = delete; // 복사 생성자 사용 안 함.
Someclass & operator=(const Someclass &) = delete;
...
};
이는 함수들을 private에 두는 것보다 이렇게 명시적으로 적는 게 더 좋다.
※ 주의 사항
사건 1