C におけるメンバーの初期化と破棄の順序
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; }
このプログラムは、他の 3 つの構造体 A、B、C を含む集約構造体のインスタンスを作成します。このプログラムを実行すると、次の出力が生成されます。 🎜>
A::A B::B C::C C::~ B::~ A::~この出力は疑問を引き起こします: この構築と破壊の順序は C 標準によって保証されていますか?答えは
はいです。 C 標準 (12.6.2) によれば、集合構造体のメンバーは次の順序で初期化および破棄されます:
初期化順序:
破棄順序:
以上がC 集合体のメンバー オブジェクトの初期化と破棄の順序はどのように決定されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。