Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
374.doc
Скачиваний:
11
Добавлен:
30.04.2022
Размер:
3.16 Mб
Скачать

1.3. Области видимости переменных и функций в

программах на C++ Builder

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

  1. Функции, объявленные в заголовочном файле модуля вне описания класса, являются глобальными. Они доступны везде внутри данного модуля. Для доступа к ним из внешних модулей в этих модулях или надо повторить их объявление, или включить директивой #include в заголовочный файл того модуля, в котором функции описаны.

  2. Функции, объявленные в файле реализации модуля, являются глобальными. Они доступны везде внутри данного модуля. Для доступа к ним из внешних модулей в этих модулях надо повторить их объявление.

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

  4. Элементы, объявленные в классе в разделе public, видимы и доступны для объектов любых классов и для других модулей, в которых директивой #include включен заголовочный файл данного модуля. При этом из объектов того же класса к ним можно обращаться непосредственно по имени, а из других объектов и процедур – только со ссылкой на объект данного класса.

  5. В классах, помимо обсуждавшихся ранее, могут быть еще разделы protected – защищенные. Элементы, объявленные в классе в разделе prоtected видимы и доступны для любых объектов внутри данного модуля, а также для объектов классов – наследников данного класса в других модулях. Объекты из других модулей, классы которых не являются наследниками данного класса, защищенных элементов не видят.

  6. Элементы, объявленные внутри функции или блока являются локальными, т. е. они видимы и доступны только внутри данной функции или данного блока. При этом время жизни переменных, объявленных внутри функции или блока, определяется временем активности данного блока. Сделать локальную переменную существующей постоянно можно с помощью спецификации static.

  7. Переменные и функции, объявленные в головном файле проекта, являются глобальными для этого файла. Если требуется доступ к ним из других модулей, то для функций в них должны быть повторены их объявления, а для переменных – повторено объявление (без инициализации) со спецификацией extern.

  8. Если во внутреннем блоке, обозначаемом как {}, объявлена переменная с тем же именем, что во внешнем блоке, или с тем же именем, что и глобальная переменная, то соответствующая внешняя или глобальная переменная в блоке не видна. В этом случае получить доступ к одноименной глобальной переменной можно только с помощью унарной операции разрешения области действия (::).

Более подробные сведения об областях видимости переменных и функций вы можете найти в [2].

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