Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Поименованные области

Внешние объявления

Любая функция автоматически видна во всех модулях программы. Если требуется ограничить область действия функци файлом, в котором она описана, используется модификатор static.

Для того чтобы сделать доступной в нескольких модулях переменную или константу, необходимо:

· определить ее ровно в одном модуле как глобальную;

· в других модулях объявить ее как внешнюю с помощью модификатора extern.

· Другой способ — поместить это объявление в заголовочный файл и включить его в нужные модули (напомню, что объявление, в отличие от определения, не создает переменную. Объявление с extern не должно содержать инициализацию: если она присутствует, модификатор extern игнорируется).

Все описания одной и той же переменной должны быть согласованы.

Пример описания двух глобальных переменных в файлах one.cpp и two.cpp с помощью заголовочного файла my_header.h:

// my_header.h — внешние объявленияextern int a; extern double b;...// one.cpp#include "my_header.h"int a;...// two.cpp#include "my_header.h"double b;...

Если переменная описана как static, область ее действия ограничивается файлом, в котором она описана.

Поименованные области служат для логического группирования объявлений. Чем больше программа, тем более актуально использование поименованных областей. Простейшим примером применения является отделение кода, написанного одним человеком, от кода, написанного другим.

Объявление поименованной области (ее также называют пространством имен) имеет формат:

namespace [ имя_области ]{ /* Объявления */}

Поименованная область может объявляться неоднократно, причем последующие объявления рассматриваются как расширения предыдущих.

Если имя области не задано, компилятор определяет его самостоятельно с помощью уникального идентификатора, различного для каждого модуля. Объявление объекта в непоименованной области равнозначно его описанию как глобального с модификатором static.

Нельзя получить доступ из одного файла к элементу неименованной области другого файла.

Пример.

namespace demo{int i = 1;int k = 0;void func1(int);void func2(int) { /*... */}}namespace demo{// Расширение// int i = 2;Неверно — двойное определениеvoid func1(double);// Перегрузкаvoid func2(int);// Верно (повторное объявление)}

В объявлении поименованной области могут присутствовать как объявления, так и определения. Логично помещать в нее только объявления, а определять их позднее с помощью имени области и оператора доступа к области видимости::, например:

void demo::func1(int) { /*... */}

Это применяется для разделения интерфейса и реализации. Таким способом нельзя объявить новый элемент пространства имен.

Объекты, объявленные внутри области, являются видимыми с момента объявления. К ним можно явно обращаться с помощью имени области и оператора доступа к области видимости::, например:

demo::i = 100; demo::func2(10);

Если имя часто используется вне своего пространства, можно объявить его доступным с помощью оператора using:

using demo::i;

После этого можно использовать имя без явного указания области.

Если требуется сделать доступными все имена из какой-либо области, используется оператор usingnamespace:

using namespace demo;

Операторы using и usingnamespace можно использовать и внутри объявления поименованной области, чтобы сделать в ней доступными объявления из другой области.

<== предыдущая лекция | следующая лекция ==>
Математические функции | Матриця „Зростання галузі / Частка ринку” (модель ВСG)
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 458; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.