一部のオブジェクトの一意のIDの場合は、2つの方法でカウンタを作成できますが、わかりませんどちらが良いかコードはかなり異なりますバイトコードではない、私は考えていない)。関数内静的変数と静的クラス変数の比較
ヘッダー:
unsigned int GetNextID();
CPP:
unsigned int GetNextID()
{
static unsigned id{0};
return id++;
}
他のオプション:
ヘッダー
最初の方法は、静的変数を使用して、いくつかの機能を持っているだろう:
class UniqueIdGenerator
{
public:
static unsigned int GetNextID();
private:
static unsigned int mID;
}
CPP:
unsigned int UniqueIdGenerator::mID = 1;
unsigned int UniqueIdGenerator::GetNextID()
{
return ++mID;
}
FYI、私は前者はスレッドセーフではないが、後者はどちらかだろう、なぜ私は見ていないことreadをしました。何かあれば、シンプルな機能がもっと好きです。簡略化すると、&が短くなります。
FWIW、そうです。いずれの実装もスレッドセーフではありません。 –
何らかの理由でスレッドの安全性に重点を置いているからです(私の質問があいまいであれば申し訳ありません)。なぜどちらの方が良いか尋ねています。それらがスレッドと同じように安全でない場合、スレッドの安全性は議論に入るべきではありません。 – ikku100