# Глава 5.3. Пространства имён [Пространство имён](https://en.cppreference.com/w/cpp/language/namespace) (namespace) — это область в коде, объединяющая логически связанные функции, константы, классы и другие сущности. ## Объявление пространства имен Для создания пространства имен используется ключевое слово `namespace`. ```cpp {.example_for_playground .example_for_playground_002} namespace Net { const std::string loopback = "127.0.0.1"; std::string get_hostname(IPv4 ip) { /* ... */ } // ... } ``` ## Доступ к пространству имен Для обращения к содержимому пространства имён применяется оператор разрешения области видимости `::`. ```cpp {.example_for_playground .example_for_playground_003} std::println(Net::loopback); std::println(Net::get_hostname("192.0.2.1")); ``` ## Для чего нужны пространства имен Пространства имён решают две основные задачи: - Предотвращение конфликта имён. Например, если завести два пространства имён `crt` (cartesian) и `geo` (geography), то в них можно создавать функции с одинаковыми именами. Их вызов будет выглядеть так: `crt::distance(point1, point2)`, `geo::distance(point1, point2)`. - Управление сложностью проекта: пространства имён упрощают организацию кода. Они структурируют проект на отдельные компоненты. ## Вложенные пространства имен Пространства имён могут быть вложенными: `data::ODBC::bind()`. Чтобы к ним было удобно обращаться, имена лучше делать короткими: `std`, `Core`, `io`. Все содержимое [коллекции библиотек boost](https://www.boost.org/) находится в одноимённом пространстве имён. Внутри него есть пространство имён `asio` библиотеки для работы с сетью. Внутри него — пространство `ip`, и уже внутри него — `tcp`. В этом пространстве имён есть класс `acceptor`. {.task_text} Напишите, как выглядит полное обращение к `acceptor`. {.task_text} ```consoleoutput {.task_source #cpp_chapter_0053_task_0030} ``` Вложенность: boost -> asio -> ip -> tcp -> acceptor. Используйте оператор `::`. {.task_hint} ```cpp {.task_answer} boost::asio::ip::tcp::acceptor ``` ---------- ## Резюме - Пространства имён нужны для структурирования кода и предотвращения конфликта имён. - Для создания пространства имён используется ключевое слово `namespace`. - Чтобы обратиться к сущности внутри пространства имен, используется оператор разрешения области видимости `::`. - Пространства имён могут быть вложенными.
Отправка...
Наша группа в telegram. Здесь можно задавать вопросы и общаться.
Задонатить. Если вам нравится курс, вы можете поддержать развитие площадки!