раздница в 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