Re: local static variable и несколько экземпляров класса
От: gbt Россия  
Дата: 29.07.05 05:26
Оценка:
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.