상속 시 생성자 및 소멸자 호출 순서
상속을 사용하는 객체 지향 프로그래밍에서는 생성자 및 소멸자 호출 순서를 이해하는 것이 중요합니다. . 이는 여러 기본 클래스와 객체 구성을 처리할 때 특히 중요합니다.
다음 클래스 계층 구조를 고려하세요.
struct A { A() { cout << "A() C-tor" << endl; } ~A() { cout << "~A() D-tor" << endl; } }; struct B : public A { B() { cout << "B() C-tor" << endl; } ~B() { cout << "~B() D-tor" << endl; } A a; };
기본 기능에서:
int main() { B b; }
여기 이 상속 계층 구조에서 생성자와 소멸자 호출의 순서를 관리하는 규칙은 다음과 같습니다.
생성자 호출:
소멸자 호출:
소멸자 호출 순서는 반대입니다. 생성자 호출 순서:
기본 초기화 목록:
명시적으로 정의된 초기화 목록이 없더라도 멤버 필드는 파생 클래스보다 먼저 초기화됩니다. 생성자가 호출됩니다. 이 경우 a는 A의 기본 생성자로 초기화됩니다.
따라서 기본 함수의 코드에 대한 예상 출력은 다음과 같습니다.
A() C-tor A() C-tor B() C-tor ~B() D-tor ~A() D-tor ~A() D-tor
위 내용은 C 상속에서 생성자와 소멸자는 어떻게 호출됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!