Hello, Frostyland, you wrote:
> > class Test
> {
> public:
> Test(int i) : idx(i){}
> int idx;
> int f()
> {
> static int step;
> return step++;
> }
> };
>
> Подразумевается, что локальная статическая переменная step статична для метода f(),
> соответственно, для разных экземпляров этого класса step будут различными.
Неверно, локальная статическая переменная создается для какаждого экземпляра
генерируемой компилятором функции. Компилятор генерирует единственный экземпляр
кода функции f (а метод — частный случай функции) для всех экземпляров класса
Test, что и подтверждает пример.
> Соответственно, такой механизм реализации счетчиков ограничен паттерном SINGLETON.
Если вы хотите использовать счетчики на уровне экземпляров классов, то
используйте member data.
--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9