local static variable и несколько экземпляров класса
От: Frostyland  
Дата: 29.07.05 05:18
Оценка:
Привет, народы!
Что-то я запутался в азах ...

Есть такой класс


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.
С уважением, В.Куликов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.