Бьерн Страуструп - Язык программирования С++. Главы 2-4
Страница 5. Время жизни объектов



2.1.3  Время жизни объектов

 Если только программист не вмешается явно, объект будет создан при
 появлении его определения и уничтожен, когда исчезнет из
 области видимости. Объекты с глобальными именами создаются,
 инициализируются (причем только один раз) и существуют до конца
 программы. Если локальные объекты описаны со служебным словом
 static, то они также существуют до конца программы. Инициализация их
 происходит, когда в первый раз управление "проходит через"
 описание этих объектов, например:

    int a = 1;

    void f()
    {
      int b = 1;   // инициализируется при каждом вызове f()
      static int c = a;  // инициализируется только один раз
      cout << " a = " << a++
           << " b = " << b++
           << " c = " << c++ << '\n';
    }

    int main()
    {
      while (a < 4) f();
    }

 Здесь программа выдаст такой результат:

    a = 1 b = 1 c = 1
    a = 2 b = 1 c = 2
    a = 3 b = 1 c = 3

   ''Из примеров этой главы для краткости изложения исключена
макрокоманда #include <iostream>. Она нужна лишь в тех из них, которые
выдают результат.

 Операция "++" является инкрементом, т. е. a++ означает: добавить 1
 к переменной a.

 Глобальная переменная или локальная переменная static, которая не была
 явно инициализирована, инициализируется неявно нулевым значением (#2.4.5).
    Используя операции  new и delete, программист может создавать
 объекты, временем жизни которых он управляет сам (см. $$3.2.6).

 
« Предыдущая статья   Следующая статья »