Program Tip

생성자 상속이란 무엇입니까?

programtip 2020. 11. 18. 09:42
반응형

생성자 상속이란 무엇입니까?


C ++ 11에서 생성자를 상속한다는 것은 무엇을 의미합니까? 그것이 내가 생각하는 것이라면 (기본 클래스 생성자가 파생 클래스의 범위로 가져옴) 내 코드에 미치는 영향은 무엇입니까? 이러한 기능의 응용 프로그램은 무엇입니까?


생성자 상속은 바로 그 의미입니다. 파생 클래스는 기본 클래스에서 생성자를 암시 적으로 상속 할 수 있습니다.

구문은 다음과 같습니다.

struct B
{
    B(int); // normal constructor 1
    B(string); // normal constructor 2
};

struct D : B
{
    using B::B; // inherit constructors from B
};

이제 D에는 암시 적으로 정의 된 다음 생성자가 있습니다.

D::D(int); // inherited
D::D(string); // inherited

Ds 멤버는 이러한 상속 된 생성자에 의해 기본적으로 생성됩니다.

생성자가 다음과 같이 정의 된 것과 같습니다.

D::D(int x) : B(x) {}
D::D(string s) : B(s) {}

이 기능은 특별한 것이 아닙니다. 입력 상용구 코드를 저장하는 간단한 방법입니다.

자세한 내용은 다음과 같습니다.

12.9 생성자 상속

1) 생성자의 이름을 지정하는 using-declaration은 상속하는 생성자의 집합을 암시 적으로 선언합니다. using-declaration에서 명명 된 클래스 X에서 상속 된 생성자의 후보 집합은 다음과 같이 기본 매개 변수의 변환으로 인해 생성되는 실제 생성자와 개념적 생성자로 구성됩니다.

  • X의 모든 비 템플릿 생성자
  • 기본 인수가있는 매개 변수가 하나 이상있는 X의 각 비 템플릿 생성자에 대해 생략 기호 매개 변수 사양을 생략하고 매개 변수 유형 목록의 끝에서 기본 인수를 사용하여 매개 변수를 연속적으로 생략 한 생성자 세트, 과
  • X의 모든 생성자 템플릿 및
  • 기본 인수가있는 매개 변수가 하나 이상있는 X의 각 생성자 템플릿에 대해 생략 된 매개 변수 사양을 생략하고 매개 변수 유형 목록의 끝에서 기본 인수가있는 매개 변수를 연속적으로 생략하여 생성되는 생성자 템플릿 집합

참고 URL : https://stackoverflow.com/questions/9979194/what-is-constructor-inheritance

반응형