Почему using namespace std - плохо?

Август 3, 2023, 00:08 - Время чтения: ~1 минут

Используя пространства имен, мы можем явно указать, из какого пространства имен мы хотим использовать определенный символ. Например, в коде std::cout, std является пространством имен, а cout - символом из этого пространства имен, представляющим стандартный поток вывода. Использование ключевого слова using namespace std позволяет нам обращаться к символам из пространства имен std без явного указания этого пространства имен каждый раз. Однако, это также может привести к проблемам. Например, если мы имеем два различных пространства имен, каждое со своим символом info, и мы используем using namespace для обоих пространств имен, то возникает конфликт имён. Компилятор не знает, из какого пространства имен мы хотим использовать info, и может возникнуть неоднозначность. Чтобы избежать таких проблем, хорошей практикой является указывать пространство имен перед каждым символом или использовать только необходимые символы из пространства имен с помощью оператора разрешения области видимости ::. Также стоит избегать использования using namespace в глобальной области видимости в заголовочных файлах, чтобы не добавлять символы из пространства имен в глобальную область видимости всего проекта.

Более простым языком я рассказал об этом в своем телеграм канале: https://t.me/Aren_et_adventures/12