Время жизни переменных.

 

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

 

Пример :

 

#include <iostream.h>

int a = 1;

void fun()

{

int b = 1; // инициализируется при каждом вызове fun()

static int c = 1; // инициализируется только один раз

cout << " a = " << a++;

cout << " b = " << b++;

cout << " c = " << c++ << " ";

}

main()

{

while (a < 4) fun();

}
вывод будет следующим:

 

a = 1 b = 1 c = 1

a = 2 b = 1 c = 2

a = 3 b = 1 c = 3


Не инициализированная явно статическая (static) переменная неявно инициализируется нулем.

 


Лекция 8.

 

С помощью операций new и delete программист может также создавать объекты, время жизни которых управляются им непосредственно.

 

 

Задание для самоконтроля:

Что будет выведено на экран в результате работы следующей программы?

 

#include <iostream.h>

 

double di(double x)

{

static double co=0;

static double sum=0;

++co;

sum+=x;

return sum/co;

}

main()

{

cout<<" ";

cout<<"di="<<di(1);

cout<<" ";

cout<<"di="<<di(2);

cout<<" ";

cout<<"di="<<di(4);

cout<<" ";

cout<<"di="<<di(10);

cout<<" ";

cout<<"di="<<di(11);

}