Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 45

Недавние изменения в стандарте Си++ коснулись областей видимости перемен­ных, объявленных внутри операторов типа for. Например, следующий код приведет к ошибке компиляции:

Ошибка возникнет вследствие того, что переменная i видима только внутри блока, соответствующего циклу for. Чтобы исправить положение, нужно объявить i вне оператора for: ■^■'■V-,:;^®

Хотя это изменение не является существенным для вас, как для начинающего, в свое время оно повергло в шок многих ветеранов программирования на Си++. В конце концов, не имеет большого значения, какая форма принята в качестве стандарта, пока мы, программисты, знаем правила.

Наконец, мы переходим к переменной х, объявленной вне функции main() (строка 4). Поскольку эта переменная объявлена вне всех функций, она на­зывается глобальной переменной (global variable) и имеет глобальную область видимости (global scope). Это означает, что переменная х доступна всюду в программе: внутри функции main(), внутри цикла while и внутри функции CountLoops().

Как было упомянуто раньше, локальная переменная перекрывает гло­бальную. Но что делать, если вы хотите обратиться к глобальной переменной х из функции main()? Для этого нужно использовать оператор разрешения видимости (scope-resolution operator), ::. Этот оператор содержится в строке 23 листинга 2.3:

cout « "Global х = " « ::х << endl;

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

Переменные extern

Реальные приложения обычно состоят из нескольких файлов исходного текста. (Термины модуль (module, unit) и исходный файл (source file) вза­имозаменяемы. Я расскажу о многомодульных программах очень кратко.) Глобальные переменные, объявленные в одном из исходных файлов, являются глобальными для этого файла, но не видимы в других модулях. Однако бывают ситуации, когда переменная должна быть доступна из любого модуля программы. Для этого нужно выполнить два действия. Во-первых, объявить переменную в одном из исходных файлов как обычную глобальную перемен­ную. Затем во всех остальных файлах, где она должна быть видима, нужно снова объявить эту переменную с ключевым словом extern:

Web-дизайн (с) 2010 All rights reserved