Default Constructor

기본 생성자는 “생성자를 직접 썼는가”로 갈린다

컴파일러는 생성자가 하나도 없을 때만 매개변수 없는 기본 생성자를 자동으로 만들어 줍니다.

생성자 선언 없음: 자동 생성
class Point {
public:
  int x;
  int y;
};

Point pt;  // OK
결과: Point()가 자동으로 생깁니다. 단, 기본 타입 멤버는 의미 있는 값으로 채워지지 않을 수 있습니다.
생성자 하나라도 선언: 자동 생성 중지
class Book {
public:
  Book(std::string title);
};

Book book; // ERROR
결과: 인자 없는 생성이 필요하면 Book()을 직접 정의하거나 = default를 명시합니다.
빈 객체가 유효한가유효하다면 기본 생성자를 제공할 수 있습니다.
입력이 꼭 필요한가필수 값이 있으면 매개변수 생성자로 강제합니다.
의도를 남길 것= default= delete로 정책을 명시합니다.
판정 한 줄: 사용자 정의 생성자가 하나라도 있으면 컴파일러의 기본 생성자 자동 생성은 멈춥니다.