1

グローバル スコープにアトミック ポインターの配列があります。これらは nullptr に初期化されていますか、それとも手動でこれを行う必要がありますか?

// Found a reason to use double-braces, but is it needed??
static std::atomic<foo *> bar[CONSTANT_BAZ] {{nullptr}};
4

1 に答える 1

0

アトミックは組み込み型として扱われ (より正確には、単純なデフォルトのコンストラクターがあります)、そのため、それらのグローバル配列は自動的に 0 に初期化されnullptrます。

ローカルの場合のみ、手動で初期化する必要がありますが、その場合でも、二重中括弧または . を使用する必要はありませんnullptr。これで十分です:

void baz() {
    std::atomic<foo *> bar[CONSTANT_BAZ]{};
}
于 2015-11-16T23:19:11.053 に答える