c++ 클래스 생성자 예제

Posted by abitou on Αυγ 02, 2019

생성자는 first_name을 fn 매개 변수값으로 초기화하고, last_name을 ln 값으로 초기화합니다. 다른 멤버 함수와 마찬가지로 생성자는 클래스 내부 또는 외부에서 정의할 수 있습니다. 생성자 초기화자는 선언이 아닌 생성자 정의에만 지정됩니다. 두 클래스가 있는 경우, 하나는 기본이고 다른 하나는 기본 클래스에서 상속되는 경우 호출 시퀀스는 다음과 같습니다. 클래스에 특정 생성자가 명시적으로 포함되어 있지 않으면 개체가 생성될 때 기본 생성자가 자동으로 호출됩니다. 클래스 개체를 선언할 때 클래스 생성자는 단순히 메모리를 할당합니다. 위의 예제와 같이 오버로드된 Son 클래스 생성자는 정수 인수를 오버로드된 기본 클래스 생성자에게 전달합니다. 다른 멤버 함수와 마찬가지로 생성자도 오버로드될 수 있습니다. 클래스에 정의된 기본 생성자와 매개 변수화된 생성자가 모두 있는 경우 매개 변수가 없는 생성자와 매개 변수가 없는 생성자가 있습니다. 생성자가 명시적일 때 이 줄에는 컴파일러 오류가 발생합니다. 자세한 내용은 사용자 정의 유형 변환을 참조하세요.

파생 클래스에서 기본 클래스에 이미 정의된 메서드와 동일한 이름과 정확히 동일한 수와 매개 변수 유형을 포함하는 메서드 정의를 포함하는 경우 이 새 새 정의는 메서드의 이전 정의를 대체합니다. 클래스가 가상 기본 클래스에서 파생된 경우 개체의 가상 기본 포인터를 초기화합니다. 단일 매개 변수 생성기를 사용하여 CMyInt 클래스의 개체를 선언할 수 있습니다.이 예제에서는 여러 범위에서 다양 한 저장소 클래스의 ToBeOrNotToBe 클래스의 개체에 대 한 생성자와 소멸자 호출 순서를 보여 합니다. 생성자가 예외를 throw하는 경우 파괴 순서는 생성 순서의 반대입니다: 위의 경우 매개 변수화된 construcor를 사용하여 사용자 정의 값으로 3개의 개체를 초기화했습니다. 생성자에서 임의의 수의 매개 변수를 가질 수 있습니다. 전용 생성자를 사용하려면 세 가지 조건 중 하나를 충족해야 합니다. 이러한 멤버의 경우 생성자 본문에 할당이 작동하지 않습니다. 즉, 기본 생성자가 없는 클래스 형식의 멤버와 const 또는 참조 형식인 멤버는 생성자 초기화자에 초기화되어야 합니다. 복사 생성자는 이러한 서명 중 하나를 가질 수 있습니다: -Werror=effc++는 초기화되지 않은 멤버를 만들지 않습니다.

이미 해결 방법 1 가지 방법을 찾았으며 컴파일러의 제안 (생성자 초기화자 목록)은 다음 단원에서 다룹니다. 클래스에 가상 함수가 있거나 상속되면 개체의 가상 함수 포인터가 초기화됩니다. 가상 함수 포인터는 클래스의 가상 함수 테이블을 가리키며 코드에 대한 가상 함수 호출의 올바른 바인딩을 활성화합니다.

Comments are closed.

Ο καιρός

ar8ra

advertisement