Я разработчик 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, созданный в память?
В какой области эта константа?
Всегда ли оно создается в памяти без создаваемого объекта A?
Кажется, что OP означало что-то еще в # 1 (обратите внимание на ключевое слово 'static'). –