Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
12.67 Кб
Скачать

Інформатика — Теорія — Область дії    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаПростір імен : Область діїЗміст курсу

Вступ

Теорія

Область дії

Практика

Практичне заняття

Поточна перевірка знань

Простір імен

Висновки

Версія для друку

  Область дії      Область видимості збігається з областю дії за винятком ситуації, коли у вкладеному блоці описана змінна з таким же ім'ям. У цьому випадку зовнішня змінна у вкладеному блоці невидима, хоча він і входить у її область дії. Проте до цієї змінної, якщо вона глобальна, можна звернутися, використовуючи операцію доступу до області видимості ::. Спосіб звернутися до схованої локальної змінної відсутній.

     У кожній області дії розрізняють так звані простори імен. Простір імен - область, у межах якої ідентифікатор повинен бути унікальним. У різних просторах імена можуть збігатися, оскільки дозвіл посилань здійснюється по контексту ідентифікатора в програмі, наприклад:

struct Node

{

     int Node;

     int i;

} Node;.

У цьому випадку протиріччя немає, оскільки імена типу, змінної й елемента структури ставляться до різних просторів. У С++ визначено чотири роздільних класи ідентифікаторів.

·     До одного простору імен ставляться імена змінних, функцій, типів, визначених користувачем (typedef) і констант перерахувань у межах однієї області видимості. Всі вони, крім імен функцій, можуть бути перевизначені у вкладених блоках.

·     Інший клас імен утворять імена типів перерахувань, структур, класів і об'єднань. Кожне ім'я повинне відрізнятися від імен інших типів у тій же області видимості.

·     Окремий клас становлять елементи кожної структури, класу й об'єднання. Ім'я елемента повинне бути унікально усередині структури, але може збігатися з іменами елементів інших структур.

     Мітки утворять окремий простір імен.

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

     Оголошення пойменованої області (її також називають простором імен) має формат:

namespace [ ім'я_області ]

{

     /* Оголошення */

}.

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

     Якщо ім'я області не задано, компілятор визначає його самостійно за допомогою унікального ідентифікатора, різного для кожного модуля. Оголошення об'єкта в непойменованій області рівнозначно його опису як глобального з модифікатором static. Не можна одержати доступ з одного файлу до елемента неіменованої області іншого файлу.

Приклад 1. Оголошення області.

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;

Після цього можна використовувати ім'я без явної вказівки області. Якщо потрібно зробити доступними усі імена з якої-небудь області, використовується оператор using namespace та вказується ім'я області.

using namespace demo;.

     Оператори using і using namespace можна використовувати й усерединіі оголошення пойменованої області, щоб зробити в ній доступними оголошення з іншої області.

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content