규칙을 생성자를 선언 합니다.
생성자는 클래스와 같은 이름이 있습니다.오버 로드 된 함수들의 규칙에 따라 다양 한 생성자를 선언할 수 있습니다.(자세한 내용은 오버 로드입니다.)
class-name ( argument-declaration-list )
설명
argument-declaration-list 비어 있을 수 있습니다.
C + + 정의 두 가지 특별 한 종류의 생성자에서 기본 및 복사 생성자는 다음 표에서 설명 합니다.
기본 및 복사 생성자
건축의 종류 |
인수 |
목적 |
---|---|---|
기본 생성자입니다. |
인수 없이 호출할 수 있습니다. |
클래스 형식의 기본 개체를 생성 합니다. |
복사 생성자 |
같은 클래스 형식에 대 한 참조의 인수를 받아들일 수 있습니다. |
클래스 형식의 개체 복사 |
기본 생성자는 인수 없이 호출할 수 있습니다.그러나 모든 인수에 기본값이 있는 인수 목록 사용 하 여 기본 생성자를 선언할 수 있습니다.마찬가지로 복사 생성자 인수를 참조 하 여 동일한 클래스 형식 수락 해야 합니다.인수를 더 제공 해, 이후의 모든 인수에 기본값이 제공 되.
모든 생성자를 제공 하지 않으면 컴파일러가 기본 생성자를 생성 하려고 합니다.복사 생성자를 제공 하지 않으면 컴파일러가 생성 하려고 합니다.컴파일러에서 생성 하는 생성자가 이러한 공용 멤버 함수가 간주 됩니다.첫 번째 인수로 개체와 참조 되지 복사 생성자를 지정 하면 오류가 생성 됩니다.
컴파일러가 생성 한 기본 생성자 (vftables 및 vbtables, 앞에서 설명한 대로 초기화)는 개체를 설정 되 고 기본 클래스 및 멤버에 대 한 기본 생성자를 호출 되지만 다른 매크로 함수를 사용 합니다.기본 클래스 및 멤버가 생성자는 존재, 액세스할 수 고 모호 하지 않은 경우에 호출 됩니다.
컴파일러에서 생성 되는 복사 생성자는 새 개체를 설정 하 고 내용 복사 해야 하는 개체의 한 멤버 방식으로 복사를 수행 합니다.기본 클래스 멤버 생성자에 있을 경우 라고 합니다. 그렇지 않은 경우 비트 단위 복사 수행 됩니다.
경우 클래스의 모든 멤버와 기본 클래스 type 사용 하는 복사 생성자가는 const 인수를 컴파일러에서 생성 되는 복사 생성자 형식의 단일 인수를 허용 consttype**&. 그렇지 않으면 컴파일러에서 생성 되는 복사 생성자 형식의 단일 인수를 받아들이는 type및**.
생성자를 사용 하 여 초기화 하는 const 또는 volatile 하지만 생성자 자체 선언할 수 없습니다로 const 또는 volatile.생성자에 대 한 올바른 저장소 클래스는 인라인. 다른 저장소 클래스 한정자를 사용 하 여 포함 하는 __declspec 키워드를 사용 하 여 생성자 컴파일러 오류가 발생 합니다.
정적 멤버 함수에는 stdcall 호출 규칙을 사용 하 고 전역 함수 선언에 __stdcall 키워드 및는 가변 인수 목록을 사용 하지 않습니다.사용할 때 해당 __stdcall 키워드에는 생성자와 같은 비정적 멤버 함수 컴파일러 thiscall 호출 규칙을 사용 합니다. "
생성자가 기본 클래스의 파생된 클래스에 의해 상속 되지 않습니다.파생 된 클래스 형식의 개체를 만들 때 시작 하는 기본 클래스의 구성 요소와 구성 됩니다. 그런 다음 파생된 클래스 구성 요소를 이동 합니다.해당 부분에서 완전 한 개체를 초기화할 때 컴파일러는 각 기본 클래스의 생성자 사용 (에 설명 된 대로 가상 파생 클래스의 경우를 제외한 기본 클래스를 초기화 하는).