C ++에서 암시 적 생성자와 기본 생성자의 차이점은 무엇입니까?


대답 1:
푸 클래스 {
 공공의:
  // 기본 ctor.
  Foo () : i_ (0) {}

  // 암시 적 변환 ctor.
  Foo (int i) : i_ (i) {}

  // ctor 복사; 전환은 포함되지 않습니다.
  Foo (const Foo & f) : i_ (f.i_) {}
 은밀한:
  int i_;
};

보이드 바 (Foo f) {
  // f로 무언가를한다
}

main () {
  푸 f0; // 기본 ctor를 사용합니다.
  푸 f1 (1); // 변환 ctor를 사용합니다.
  바 (f0); // 복사 ctor를 사용합니다.
  바 (2); // 암시 적 변환 ctor를 사용합니다.
}
  Foo (int i = 0) : i_ (i) {};

대답 2:
#include 
구조체 X {
    X () {std :: cout << "이것은 X \ n의 기본 ctor입니다"; }
};
구조체 Y {
    Y (int n = 0) {std :: cout << "Y \ n의 기본 ctor입니다."; }
};
struct Z : X {
     // Z의 생성자는 암시 적으로 정의됩니다.
     // Z () : X () {}로
};
int main ()
{
    X x; // X :: X () 호출
    Y y; // Y :: Y ()를 호출
    Z z; // Z :: Z ()를 호출하고 X :: X ()를 호출합니다.
}