LINUX.ORG.RU

статическая функция


0

0

раздница в 2х последующих классах в том, что один из них определен, как static, в каждом методе своя статическая переменная. В функции main создается по 2 экземлпляра класса и запускается метод. Казалось бы для каждого экземпляра класса one должна быть создана своя статическая переменная, тогда как для экземпляров класса two она должна быть одна, так как они имеют один общий метод. 

#include <iostream>

class one
{
 public:
   void method ()
   {
      static int var = 0;
        var++;
        std::cout << var << std::endl;
   }
};

class two
{
 public:
   static void method ()
   {
      static int var = 0;
        var++;
        std::cout << var << std::endl;
   }
};

int
main (void)
{
   one a1, b1;
   two a2, b2;

   a1.method ();                // у каждого своя статическая переменая переменная var 
   b1.method ();                // и она будет равна 1

   a2.method ();                // одна единственная var для всех, 
   b2.method ();                // т.е. после этих вызовов var будет равна 2
}

tima@tima:~/source/temp> g++ -o st st.cpp
tima@tima:~/source/temp> ./st
1
2
1
2 

почему не так?
tima@tima:~/source/temp> g++ -o st st.cpp
tima@tima:~/source/temp> ./st
1
1
1
2 

Re: статическая функция

хотя на Ц++ не пишу, может нада переменную декларировать в начале как статик?

попробуй может получится!

djung ★★ ()

Re: статическая функция

статическая переменная объявленная внутри функции члена будет такой же статической переменной, за исключением что доступ к ней будет только через функии члены

acefsm ()

Re: статическая функция

вообще не помешало бы почитать Lippman - Inside the C++ object model

acefsm ()

Re: статическая функция

Если ты хочешь иметь единственную статическую
переменную для всех экземпляров класса , то объяви
её в самом классе,не в методе класса .

class two{
void method()
{cout<<++var;}
static int var;
}

обязательно проинициализируй.
int two::var=0;

kitov ★★★ ()
Ответ на: Re: статическая функция от acefsm

Re: статическая функция

Очень давно , ещё до рождения Страуструпа ...
Заканчиваем флуд :-)

kitov ★★★ ()

Re: статическая функция

ты ж наверно на коре Дуо сидишь -- вот вторая статика и вылазит

dilmah ★★★★★ ()
Ответ на: Re: статическая функция от dilmah

Re: статическая функция

<flame mode="flood">Неа, просто мир у нас бинарный, одиночная система счистления только для зеков, согласно ru.wikipedia.org</flame>

krum ()

Re: статическая функция

> one a1, b1;
> two a2, b2;


Уверены, что не ошиблись в этих 2х строках?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.