"используя пространство имен ...." Почему? - PullRequest
1 голос
/ 06 апреля 2011

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

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

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

Привет!

Ответы [ 3 ]

3 голосов
/ 06 апреля 2011

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

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

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

1 голос
/ 06 апреля 2011

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

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

1 голос
/ 06 апреля 2011

По-видимому, вы всегда использовали (предварительно скомпилированный) (заголовок), который содержал «using namespace std»; Это стандарт ANSI C ++, который предписывает, чтобы стандартная библиотека была (и всегда была) в пространстве имен std

...