|
Программирование >> Расширенная версия языка c++
Примеры 1. В представленном ниже примере иллюстрируются атрибуты демонстрационных пространств имен. Демонстрационные пространства имен - , . #include <iostreaiti> using namespace std; - .. .. определение первого пространства имен namespace firstNS { . class demo ( . int public: demo(int x) ( i = x; } voi (int x) { i = x; } in i() { return i; J cha r[] = Иллюстрация пространств имен\п ; int counter; оеделение второго пространства имен namespace MndKS { int x, у; int mainO * namespace { } . Безымянные пространства имен дают возможность задавать уникальные идентификаторы, известные только внутри области видимости одного файла. Таким образом, внутри файла, содержащего безымянное пространство имен, к членам этого пространства можно обращаться напрямую, без необходимости каких бы то ни бгло уточнений. Но вне этого файла такие идентификаторы неизвестны. Вам вряд ли понадобится создавать свои пространства имен для небольших и средних по объему программ. Однако, если вы собираетесь создавать библиотеки функций или классов, предназначенных для многократного использования, или хотите гарантировать своим программам широкую переноси-вам следует рассмотреть возможность размещения своих кодов внутри некоторого пространства имен. cout Значение объекта ob равно: ob.geti(); * cout endl; ob.seti(99); cout -о- Теперь значение объекта оЬ равно: ob.getK); . [. cout endl; , \- , .-, . , . Г .. ; > / / вводим строку str в текую область видимости using firstHS: :str; cout str; вводим все пространство имен в текущую область видимости using namespace firstNS; for (counter=lC counter; counter-) cout counter cout endl; пространство имен secondNS secondNS::x = 10; secondNS: :y = 20; \ cou Переменные x, у равны: secondNS: :x; cout i.econdNS::y endl; вводим все пространство имен secondNS в текущую область видимости using namespace secondNS; demo xob{x) , yob(y) ; cout Значения объектов xob, yob равны: xob.getl(); cout yob.getil, ч.. endl; return 0; i ..... .. . После выполнения программы на экран будет выведено следующее: Значение объекта ob равно: 10 f : tin Теперь значение объекта ob равно: 9 9 . Иллюстрация пространств имен 10 987654321 Переменные х, у равны: 10, 2 0 Значения объектов xob, yob равны: 10, 2 0 расширяем область видимости .. :=1 >J- J firstNS::demo nbfl01; 4. /* После объявления объекта ob, его функции-члены могут использоваться прямо, без какого бы то ни было уточнения пространства имен int main{) - с , i using namespace Demo; a = b = x = 100; cou b x; return 0; В данном примере обе переменные, а и b, оказались в одном пространстве имен - пространстве имен Demo, а переменная х осталась в глобальном пространстве имен. 3. Как уже упоминалось, стандарт Standard C++ определяет целую библиотеку в собственном пространстве имен std. Именно по этой причине во всех программах этой книги имеется следующая инструкция: usin espace std; Эта инструкция делает пространство имен std текущим, что позволяет получить прямой доступ к именам функции и классов, определенных в библиотеке языка Standard С++, без необходимости каждый раз с помощью оператора Программа иллюстрирует одно важное положение: при совместном использовании нескольких пространств имен одно пространство не подменяет другое. Когда вы вводите некоторое пространство имен в текущую область видимости, его имена просто добавляются в эту область, независимо от того, находятся ли в ней в это время имена из других пространств имен. Таким образом, ко времени завершения программы в глобальное пространство имен были добавлены пространства имен std, firstNS и secondNs. 2. Как уже упоминалось, пространство имен можно разделить либо между файлами, либо внутри одного файла, тогда содержимое этого пространства имен объединяется. Рассмотрим пример объединения разделенного пространства имен. пространства имен ♦ include <iostreani> . , , using namespace std; namespace Demo { int a; объявление переменной а в пространстве имен Demo int x; объявление переменной х льном пространстве ен namespace Demo { in ., объявление переменной Ь в пространстве имен Demo
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |