Такие переменные называются статическими переменными класса.
class SomeClass
{
public:
static int m_objectsCounter;
SomeClass() {
++m_objectsCounter;
}
virtual ~SomeClass() {
--m_objectsCounter;
}
};
И где-то в CPP-файле нужно будет объявить:
SomeClass::m_objectsCounter = 0;
Для доступа к статической переменной класса используется тот же синтаксис, что и для методов класса:
int main()
{
SomeClass x, y, z;
std::cout << SomeClass::m_objectsCounter << std::endl;
// можно и так:
std::cout << y.m_objectsCounter << std::endl;
return 0;
}
Статическими могут быть не только переменные класса, но и методы. Например:
class SomeClass
{
public:
static int getSomethingGlobal() {
return somethingGlobal;
}
};
int main()
{
std::cout << SomeClass::getSomethingGlobal() << std::endl;
return 0;
}