Пространства имён
Порядок в именах, когда кода становится много
После урока ты сможешь
- Помещать код проекта в своё пространство имён
- Понимать, почему using namespace std в заголовке — плохо
- Прятать детали реализации
Шаг 1 из 7
Когда имена сталкиваются
В маленькой программе все имена твои, и конфликтов нет. В настоящем проекте рядом живут твой код, стандартная библиотека и несколько сторонних библиотек. Функция log есть у библиотеки логирования, у математической библиотеки и, скорее всего, у тебя. Структура Config найдётся почти в каждой библиотеке.
Если два разных log окажутся в одной программе, линковщик не поймёт, какой из них какой. Решение, которым C++ пользуется повсюду, — пространства имён (namespaces). Это фамилии для имён: math::log и logging::log — разные функции, хотя зовут их одинаково.
Ты пользуешься этим с первого урока: std:: и есть пространство имён стандартной библиотеки. std::println — функция println из семьи std.