Возьмите этот пример:
SomeClass.h
class Foo {
public:
static int bar;
int x;
void someFunc() {
this->x = 5;
this->bar = 9;
}
};
SomeClass.cpp
int Foo::bar = 0;
mainc.pp
#include <iostream>
#include "SomeClass.h"
int main() {
Foo f;
f.someFunc();
std::cout << "f.x = " << f.x << '\n';
std::cout << "f.bar = " << f.bar << '\n';
return 0;
}
Скомпилировано и построено с помощью Visual Studio 2017CE.
выход
f.x = 5
f.bar = 9
Однако согласно cppreference: static
Статические члены класса не связаны с объектами класса: они являются независимыми переменными со статической или потоковой (начиная с C ++ 11) продолжительностью хранения или обычными функциями.
Теперь, что касается статических функций-членов, они заявляют:
Статические функции-члены не связаны ни с одним объектом. При вызове у них нет этого указателя.
Мне просто нужна некоторая ясность в этом: я думал, что и у статических членов, и у членов статических функций не было связано с ними указателя this
...