我是一名 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 对象吗?