POD の種類と、それらがスタック上でどのように割り当てられ、初期化されるかを理解しようとしています。与えられた
class A {
public:
A();
int x;
};
class B {
public:
int x;
};
int func()
{
A a;
B b;
}
b は a の後に割り当てられますが、a の前に初期化されるというのは正しいですか? つまり、スペースは宣言された順序で a と b に割り当てられますが、スペースが割り当てられると b が初期化され、宣言されると a が初期化されますか?
POD と Aggregated に関する非常に優れた FAQ を読みました。Aggregate と POD とは何ですか。
彼が言ったことの 1 つ: 非 POD クラス型のオブジェクトの有効期間は、コンストラクターが終了したときに始まり、デストラクタが終了したときに終了します。POD クラスの場合、有効期間はオブジェクトのストレージが占有されたときに始まり、そのストレージが解放または再利用されたときに終了します。
そのため、POD がどのように割り当てられ、初期化されるか、およびそれが非 POD とどのように異なるかの詳細を理解しようとしています。