Язык программирования C++ от Страуструпа

       

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


Если только программист не вмешается явно, объект будет создан при появлении его определения и уничтожен, когда исчезнет из области видимости. Объекты с глобальными именами создаются, инициализируются (причем только один раз) и существуют до конца программы. Если локальные объекты описаны со служебным словом 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).



Содержание раздела