Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C_lect.doc
Скачиваний:
18
Добавлен:
12.11.2018
Размер:
856.06 Кб
Скачать

2.2.3. Область видимости объекта

Понятие видимости объекта по смыслу близко к понятию области действия. Данное понятие стали выделять отдельно в связи с появление в языке Си++ новой операции «изменение области видимости».

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

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

Неформально можно записать:

«Область видимости» «≤» «Области действия»

Существует операция изменения области видимости. Ее формат:

::<идентификатор>

Данная операция является унарной и позволяет обращаться к глобальным объектам (переменным) даже если внутри блока данное имя используется для другой переменной.

Пример использования операции:

#include <stdio.h>

int i=1; // Глобальная переменная

void main()

{

int i=2; // Локальная перменнная блока

// Внутри блока глабальная переменная i не видна

printf("i=%d", i); // Печатается i=2

// С помощью операции :: обращаемся к глобальной переменной

printf("\ni=%d", ::i); // Печатаеся i=1

::i=100; // Изменяем значение глобальной переменной

}

2.2.4. Продолжительность существования объекта (время жизни)

Продолжительность существования объекта (время жизни) - это интервал времени выполнения программы, в течение которого программный объект (переменная или функция) существует.

Существует три разновидности продолжительности существования:

  • статическая, объект существует в течение всего времени выполнения программы;

  • локальная, объект существует в пределах выполнения операторов блока;

  • динамическая, объект создается и удаляется явным образом с помощью специальных функций (или операторов в Си++).

2.2.5. Тип компоновки (связывания)‏

Тип компоновки (связывания)‏ определяет соответствие идентификатора конкретному объекту в программе, исходный текст которой размещен в нескольких файлах, т.е. можно ли идентификатор использовать в нескольких файлах проекта или его можно использовать только в одном файле.

Два вида связывания:

  • внутреннее, к объекту можно обращаться только в одном файле (модуле) проекта;

  • внешнее, к объекту можно обращаться из различных файлов (модулей) проекта, при этом переменная в одном файле должна быть определена, а в других файлах описана с модификатором extern.

Взаимосвязь классов памяти и других атрибутов объектов представлена в таблице 2.

Таблица 2 – Взаимосвязь атрибутов объектов

Класс памяти

Атрибуты объектов

Область действия

Область видимости

Продолжительность существования

Тип связывания

auto

От точки описания до конца блока за исключением внутренних блоков, если в них повторно используется идентификатор

От точки описания до конца блока за исключением внутренних блоков, если в них повторно используется идентификатор

Локальная

Внутреннее связывание

register

static

От точки описания до конца файла (блока)

От точки описания до конца блока за исключением внутренних блоков, если в них повторно используется идентификатор

Статическая

extern

Внешне связывание

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]