私はいくつかの(C ++)コードを調べていて、次のようなものを見つけました:
//Foo.cpp
namespace
{
void SomeHelperFunctionA() {}
void SomeHelperFunctionB() {}
void SomeHelperFunctionC() {}
//etc...
class SomeClass //<---
{
//Impl
};
}
SomeHelperFunction[A-Z]
その翻訳ユニットでのみ必要な関数なので、匿名である理由を理解していますnamespace
。同様に、SomeClass
もその翻訳ユニットでのみ必要ですが、グローバルクラス宣言がない場合は、名前の衝突なしに、異なる翻訳ユニットで同じ名前のクラスを作成できるという印象を受けました(たとえば、一般的に含まれるヘッダーファイル)。
また、この特定の変換ユニットには、同じ名前()のクラスを宣言する可能性のあるヘッダーは含まれていませんSomeClass
。
それで、この情報を与えられて、誰かが元のプログラマーがこれをしたかもしれない理由にいくつかの光を当てることができますか?おそらく将来への予防策として?
正直なところ、匿名の名前空間で使用されるクラスはこれまで見たことがありません。
ありがとう!