Я знаю, что эта программа не использует статическую переменную соответствующим образом, но показывает, как воспроизвести поведение, которое я видел:
Main.cpp:
int main(){
MyObject* p = new MyObject();
Header::i = 5;
printf("i %i\n", Header::i);
p->update();
return 0;
}
MyObject.cpp:
MyObject::MyObject(){
}
void MyObject::update(){
printf("i %i\n", Header::i);
}
Extern.h:
namespace Header {
static int i;
};
Выход, который я получаю:
i : 5
i : 0
Почему я не получаю 5
для обоих выходов? Откуда этот 0
?
Не могли бы вы объяснить, как работают статические переменные?