私は C 開発者で、最近 C++ に切り替えたばかりなので、名前空間は新たに学ぶべきものです。A クラスには静的メソッド validate() があるため、A クラスの静的変数または定数にのみアクセスできます。しかし、A.cpp に名前空間で定義された定数がある場合、val() はその定数を使用でき、以下のコードは適切にコンパイルされています。
ああ
class A
{
public:
A();
static bool validate(const int num);
};
A::A()
{
// Do nothing. Just an example.
}
A.cpp
namespace A_local_constants
{
const int val = 1;
}
using namespace A_local_constants;
bool A::validate(const int num)
{
return (num == val);
}
だから私の質問は:
静的関数 validate() が非静的定数 val を使用できるのはなぜですか?
val はメモリ内のどこに作成されますか?
この定数はどの範囲ですか?
Aオブジェクトが作成されずに常にメモリに作成されますか?