мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| cpp:cpp_ultimate_guide:namespace [2025/10/31 15:23] – создано radi0dev | cpp:cpp_ultimate_guide:namespace [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in | ||
|---|---|---|---|
| Строка 2: | Строка 2: | ||
| ===== namespace ===== | ===== namespace ===== | ||
| + | |||
| + | Пространство имен позволяет сгруппировать функционал в отдельные контейнеры. Пространство имен представляет блок кода, который содержит набор компонентов (функций, | ||
| + | |||
| + | Глобальное пространство имен - пространство имен по-умолчанию, | ||
| + | |||
| + | ++++пример| | ||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | void print(const std:: | ||
| + | |||
| + | const std::string message{" | ||
| + | |||
| + | int main() { | ||
| + | print(message); | ||
| + | } | ||
| + | |||
| + | void print(const std:: | ||
| + | std::cout << text << std::endl; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Здесь определены функции print и main и константа message и не используется никакого пространства имен. Поэтому фактически функции print и main и константа message определены в глобальном пространстве имен. В принципе для обращения к ним также можно использовать оператор ::, только без названия пространства имен, хотя это и избыточно: | ||
| + | <code cpp> | ||
| + | int main() { | ||
| + | :: | ||
| + | } | ||
| + | </ | ||
| + | ++++ | ||
| + | |||
| + | ==== Определение пространства имен ==== | ||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | namespace hello { | ||
| + | |||
| + | const std::string message{" | ||
| + | void print(const std:: | ||
| + | std::cout << text << std::endl; | ||
| + | } | ||
| + | |||
| + | } // namespace hello | ||
| + | |||
| + | int main() { | ||
| + | hello:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Вложенные пространства имен ==== | ||
| + | |||
| + | Одно пространство имен может содержать в себе другое | ||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | namespace console { | ||
| + | namespace messages { | ||
| + | |||
| + | const std::string hello{" | ||
| + | const std::string welcome{" | ||
| + | const std::string goodbye{" | ||
| + | |||
| + | } // namespace messages | ||
| + | |||
| + | void print(const std:: | ||
| + | std::cout << text << std::endl; | ||
| + | } | ||
| + | void print_default() { | ||
| + | std::cout << messages:: | ||
| + | } | ||
| + | |||
| + | } // namespace console | ||
| + | |||
| + | int main() { | ||
| + | console:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | для обращения к члену вложенного пространства имен нужно использовать цепочку обращений. | ||
| ===== using ===== | ===== using ===== | ||