2
デフォルトコンストラクタ(コンパイラ生成)を使用した初期化 「静的初期化」または「動的初期化」ですか?コンパイル時またはであること動的初期化、すなわち、それが初期化または他のもののために他のファイルでi
を使用しても安全である -スタティックまたはダイナミック初期化時
は、私がここで
class test{
int m;
public :
test(): m(12) {}
};
test i;
int main()
{//
}
にするときi
が初期化取得されていることを意味ですか?
ユーザがデフォルトのコンストラクタを定義している場合はどうなりますか?
質問の要点は、「グローバル/名前空間スコープオブジェクトの初期化は、それらのオブジェクトにユーザー定義のコンストラクタがあるとどうなりますか?」です。答えは、標準の '§3.6.2'にあります。この場合、 'i.m'は静的にゼロに初期化され、動的に12に初期化されますが、デフォルトのコンストラクタが' constexpr'と宣言された場合、 'i.m'は静的に12に初期化されます。 – Mankarse