Безымянные пространства имен* (анонимные пространства имен) в C++ представляют собой специальные конструкции, которые позволяют организовать имена в области видимости без явного указания имени пространства.
Пример использования безымянного пространства имён:
#include <iostream>
namespace {
void internalFunction() {
std::cout << "Internal function inside an anonymous namespace" << std::endl;
}
}
int main() {
internalFunction(); // Вызов функции из безымянного пространства имён
return 0;
}
Пример использования безымянного пространства имён с классом:
#include <iostream>
namespace {
class InternalClass {
public:
void method() {
std::cout << "Method of InternalClass inside an anonymous namespace" << std::endl;
}
};
}
int main() {
InternalClass obj;
obj.method(); // Вызов метода класса из безымянного пространства имён
return 0;
}
Особенности безымянного пространства имён:
-
Локальность: Сущности (переменные, функции, классы) в безымянном пространстве имён видны только в текущем файле.
-
Изоляция: Название безымянного пространства имён не упоминается в других файлах, что предотвращает конфликты имен с другими модулями.
-
Применение: Часто используется для функций и переменных, которые не должны быть видны в других частях программы или для локализации имен внутри конкретного модуля.