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