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).


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.