    12:	    int k = 300; 
    13	    cout << "Local k == " << k	<< '\n'; 
    14:	    cout << "Global k == " << ::k << '\n'; 
    15:	  } 
    16:	  return 0; 
    17:	} 

    В строке 3 объявляется и инициализируется значением 100 глобальная 
переменная k; а в строке 7 объявляется переменная i, локальная в функции 
main(). Строки 9-10 выводят значения k и i. Нет необходимости использовать 
оператор разрешения видимости в строке 9, так как была объявлена только одна 
переменная k. 
    Строки 11-15 содержат новый блок-оператор, заключенный внутри функции 
main(). Хотя это и необычно для практики программирования, блок может быть 
размещен в другом блоке (строки 11 и 15). Конечно, на практике подобные 
вложенные блоки принадлежат операторам if, while и им подобным. Внутри 
вложенного блока в строке 12 объявляется новая переменная с именем k, 
инициализированная значением 300. В отличие от ANSI С, C++ позволяет объявлять 
и инициализировать переменные в любом месте блока-оператора. Теперь мы имеем 
две переменных k: глобальную, объявленную в строке 3, и локальную, объявленную 
в строке 12. Поскольку новая локальная k скрывает глобальную переменную с тем 
же именем, в строке 13 отображается значение локальной переменной. Чтобы 
получить доступ к глобальной переменной, используется оператор разрешения 
области видимости, как показано в строке 14. 
    Переменные, объявленные внутри блока-оператора, существуют только в 
пределах этого блока. Другими словами, область их видимости ограничена местом 
их объявления. Следующий код вызовет сообщение об ошибке: 

    if (expression) { 
       int count = 0;	// Объявление переменной в области действия 
                                   // оператора if 
       ......
   } 
   cout « "count == " « count « '\n';   // ??? 

    При компиляции последняя строка вызовет сообщение об ошибке, поскольку 
переменная count объявлена вне области видимости оператора if, она не 
существует вне ее. 
    Бывает полезно одновременно объявлять и инициализировать переменную, 
управляющую циклом for. В ANSI С типичный цикл выглядит так: 

    void f() 
    { 
       int i; 
       for (i=0;  i<MAX; !++ ) 
            .......
    } 

    В C++ можно объявить переменную для цикла непосредственно внутри него, 
сократив код до следующего: 

     void f() 
    { 
       for (int i=0;   i<MAX;  i++) 
          .....
     }

    Однако такое объявление действует не только в пределах видимости цикла 
for. Инициализация управляющей переменной (в данном случае i=0;) выполняется 
до того, как начнется цикл, таким образом, i в данном примере попадает в 
область видимости f() и может использоваться любыми операторами, следующими за for. 

    Константы 

    Константы — новшество языка C++, заимствованное языком ANSI С. Объявление 
переменных с ключевым словом const создает вокруг них "силовое поле", 
предохраняющее их от изменения во время выполнения программы. Если вы объявили 
целую переменную count следующим образом: 

    const int count =1234; 

 Компилятор выдаст сообщение об ошибке в операторе 

    count++;	// ??? 

    Некоторые программисты рекомендуют использовать объявления const вместо 
символьных констант, созданных с помощью #define. Символьная константа 

    #define MAX 100 

определяет макрос с именем МАХ, связанный с текстом 100 (не целым 
значением 100). Если МАХ используется следующим образом: 

    for (int i=0;  i<MAX;  i++) 


    Глава 12. Введение в C++     287 
