오 C++ 전문가, 나는 지혜를 구합니다. 나에게 standardese을 말하고 다음과 같은 프로그램이 나의 경우 C++ 보장 알려주기 :멤버 생성자 및 소멸자 호출 순서
#include <iostream>
using namespace std;
struct A
{
A() { cout << "A::A" << endl; }
~A() { cout << "A::~" << endl; }
};
struct B
{
B() { cout << "B::B" << endl; }
~B() { cout << "B::~" << endl; }
};
struct C
{
C() { cout << "C::C" << endl; }
~C() { cout << "C::~" << endl; }
};
struct Aggregate
{
A a;
B b;
C c;
};
int main()
{
Aggregate a;
return 0;
}
항상 즉
A::A
B::B
C::C
C::~
B::~
A::~
를 생성합니다, 회원은 선언의 순서에 의해 초기화 및 역으로 파괴 보장됩니다 주문?
클래스가 크고 불투명 해지면 미묘한 버그가 발생하는 합리적 인 원인이됩니다. 50 개의 데이터 멤버가 있고 생성자 초기화 목록에 초기화 된 멤버가 많으면 이니셜 라이저 목록에 순서가 있다고 가정하는 것이 쉽습니다. 결국 코드 작성자는 목록을 신중하게 주문했습니다 ... 그렇지 않습니까? – Permaquid