«использование пространства имен ….» Почему?

#visual-c #namespaces #turbo-c

#visual-c #пространства имен #turbo-c

Вопрос:

Я новичок в программировании на C , и мы используем Turbo C (старую IDE) для компиляции наших программ. Проблема в том, что в Turbo C мы никогда не используем пространства имен или даже std::cout во время программирования. Мы просто вводим cout<<…. для вывода данных.

Недавно я начал использовать Visual C 2010 для написания своих программ, и мы предположительно должны использовать «using namespace std» или «std::» здесь. Но я получал выходные данные, даже когда использовал только cout<<….. и никаких «using namespace std» (компилятор показал ошибку, но получил выходные данные).

Поэтому я не понимаю использования пространств имен. Может ли кто-нибудь мне помочь?

С уважением!

Ответ №1:

Пространства имен просто позволяют программисту избегать конфликтов именования конструкций. Таким образом, я могу использовать несколько библиотек, не беспокоясь о том, что их классы будут иметь одинаковые имена. Java делает нечто подобное с пакетами, и C # делает нечто подобное, что они тоже называют пространствами имен.

using namespace Синтаксис просто означает, что компилятор должен искать в этом пространстве имен все, что он не может найти, объявленное в текущей области видимости.

Если вас не заставляют использовать полное std:: имя или using namespace синтаксис, то, скорее всего, что-то в вашей программе уже включает это, возможно, в #include редактируемом файле.

Ответ №2:

Очевидно, вы всегда использовали (предварительно скомпилированный) (заголовок) include, который содержал «использование пространства имен std»; Стандарт ANSI C требует, чтобы стандартная библиотека находилась (и всегда была) в пространстве имен std

Комментарии:

1. Нет, компилятор просто настолько старый (около 1993 года для Turbo C 3.0), так что он является предстандартным. Все находится в глобальном пространстве имен. Это пережиток.

2. Что .. тогда у них был STL? Почему они не сказали мне раньше 🙂

Ответ №3:

Пространства имен полезны при определении того, какой класс использовать. Допустим, в вашей программе есть класс с именем «Sample». У вас также есть одна или несколько библиотек DLL, которые определили класс с именем «Sample».

Когда вы создаете новый экземпляр «Sample», как он узнает, какую реализацию использовать? Вы используете пространство имен для различения типа, который должен быть создан.