Принципы объектно-ориентированного визуального программирования_____49

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

В заключение просуммируем изложенные правила.

• В описание функций-элементов должна добавляться ссылка на класс с помо-
щью операции разрешения области действия (::).

• Функции-элементы объявляются и описываются с применением опции компи-
|        лятора _fastcall.

;     • В функциях-элементах обращение к другим функциям-элементам и дан-
ным-элементам того же класса может осуществляться без указания на объект.

• В функциях, не являющихся элементами класса данного объекта, доступ к

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

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

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

При решении вопросов видимости важнейшее значение имеет понятие блока.
Блок — это фрагмент кода, ограниченный фигурными скобками « { } ». Перемен-
ные, объявленные вне какого-то блока, являются глобальными и имеют областью
видимости файл. Если какая-то переменная объявлена внутри блока, то ее область
видимости — блок. Т.е. это локальная переменная, которую можно использовать
только от момента ее объявления до первой встретившейся в коде закрывающейся
фигурной скобки «}>>. Если имеются вложенные блоки, то переменная видна и в
этих вложенных блоках. Если в каком-то блоке объявлена переменная с тем же име-
нем, какое имеет глобальная переменная или переменная, объявленная во внешнем
блоке, то это внутреннее объявление делает невидимой одноименную внешнюю пе-
ременную.

Например:

int i = 1, k = 4   // объявление глобальных переменных
(
int i = 5, j = 2; // объявление переменных внешнего блока

...               // видны переменные j, k и переменная i этого блока
)
int i = 7;    ' // объявление переменной i внутреннего блока

»...              // видны переменные j, k и переменная i внутренняя

>

...                // видны переменные j, k и переменная i внешнего

блока
)

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