Си++: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 1581:
Если бы мы ''определили'' переменную сразу в файле «<tt>var.h</tt>» (не написав слово «<tt>extern</tt>»), память под неё была бы отведена в ''каждом'' файле, в который включается «<tt>var.h</tt>». В нашем случае — память была бы выделена два раза. Но как у одной переменной может быть две разных области памяти? Никак. И редактор связей выдаст вам соответствующую ошибку: «Идентификатор <tt>Foo::Bar::Baz::z</tt> определён несколько раз». Это является прямым следствием открытости пространств имён.
 
====== Неименованные пространства имён ======
 
Да, есть и такие. Собственно, странного в этом ничего нет. Пространство имён является неким контейнером для имён сущностей, а имеет ли сам контейнер имя или нет, на его функции не особо-то и влияет. Наличие имени не более чем позволяет ссылаться на обозначаемую им сущность. Неименованные пространства имён, не имея собственного имени, просто не позволяют на них ссылаться, однако свои функции при этом исполняют исправно.