Статьи

Учебные материалы по языку C++ — от основ до продвинутых тем

Пространства имён и организация кода

Страница 38 из 43 · 2026-10-25 · 1 мин чтения

Пространства имён и организация кода

Зачем нужны пространства имён

Пространства имён группируют связанные имена и помогают избежать конфликтов:

namespace game {    int GetVersion() { return 1; }}int version = game::GetVersion();

Оператор :: называется оператором разрешения области видимости.

Вложенные пространства имён

namespace engine::render {    void Draw();}

Такая запись доступна начиная с C++17. До этого вложенные пространства имён записывались через несколько блоков namespace.

using

Можно импортировать конкретное имя:

using std::string;

Директива using namespace std; делает имена пространства std доступными без префикса и может вызывать конфликты. Особенно избегай её в заголовочных файлах, которые включаются многими единицами трансляции.

Псевдонимы

using PlayerId = unsigned long long;namespace gfx = engine::render;

using создаёт псевдоним типа или пространства имён. Для шаблонных псевдонимов он удобнее старого typedef.

Анонимное пространство имён

В .cpp анонимное пространство имён можно использовать для имён с внутренним связыванием:

namespace {    int InternalHelper() { return 42; }}

Такой помощник не экспортируется как обычное внешнее имя из этой единицы трансляции.

Итог

Давай связанным именам собственное пространство, предпочитай точечный using глобальному импорту и не помещай using namespace std; в заголовки.