Привет, народы!
Что-то я запутался в азах
...
Есть такой класс
class Test
{
public:
Test(int i) : idx(i){}
int idx;
int f()
{
static int step;
return step++;
}
};
Подразумевается, что локальная статическая переменная
step статична для метода
f(),
соответственно, для разных экземпляров этого класса
step будут различными.
Однако в результате выходит, что нет!
int main(int argc, char* argv[])
{
Test a(0);
Test b(1);
printf("object %d , result of f() = %d\n", a.idx, a.f());
printf("object %d , result of f() = %d\n\n", b.idx, b.f());
system("pause");
return 0;
}
Тест выводит
object 0 , result of f() = 0
object 1 , result of f() = 1
что свидетельствует о разделяемом характере переменной
step.
Соответственно, такой механизм реализации счетчиков ограничен паттерном SINGLETON.