비정적 데이터 멤버의 초기화 순서
이 시나리오에서는 두 개의 비정적 데이터 멤버 a와 b가 선언되었습니다. 일반적인 질문이 생깁니다. X의 생성자가 다음과 같을 때 이러한 데이터 멤버는 어떤 순서로 초기화됩니까? 호출되었습니까?
이 질문에 답하기 위해 클래스 멤버의 초기화 순서를 설명하는 C 표준의 섹션 12.6.2를 살펴보겠습니다.
5 Initialization shall proceed in the following order: -- First, and only for the constructor of the most derived class as described below, virtual base classes shall be initialized in the order they appear on a depth-first left-to-right traversal of the directed acyclic graph of base classes... -- Then, direct base classes shall be initialized in declaration order as they appear in the base-specifier-list... -- Then, nonstatic data members shall be initialized in the order they were declared in the class definition... -- Finally, the body of the constructor is executed...
이 규칙에 따라 순서는 a와 b의 초기화 여부는 클래스 정의 내 배치에 의해서만 결정됩니다. a가 b보다 우선하므로 먼저 초기화됩니다. 이는 생성자 본문 내에서 명시적으로 지정된 멤버 초기화 순서와 관계없이 적용됩니다.
따라서 이 경우 X의 생성자가 호출될 때 A의 생성자가 B의 생성자보다 먼저 호출됩니다.
위 내용은 C에서 비정적 데이터 멤버의 초기화 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!