このコードから得られる結果に混乱しています。1つのdllでは、静的変数が初期化されるときにカウンターがインクリメントされます。次に、mainが実行されると、このカウンターを読み取りますが、1ではなく0を取得します。誰かがこれを説明できますか?
私のダイナミックライブラリプロジェクトでは:
// Header file
class Foo {
int i_ = 0;
Foo(const Foo&) = delete;
Foo& operator= (Foo) = delete;
Foo()
{
}
public:
void inc()
{
++i_;
}
int geti()
{
return i_;
}
static Foo& get()
{
static Foo instance_;
return instance_;
}
Foo( Foo&&) = default;
Foo& operator= (Foo&&) = default;
};
int initialize()
{
Foo::get().inc();
return 10;
}
class Bar
{
static int b_;
};
// cpp file
#include "ClassLocalStatic.h"
int Bar::b_ = initialize();
私のアプリケーションプロジェクトでは
// main.cpp
#include <iostream>
#include "ClassLocalstatic.h"
int main(int argc, const char * argv[])
{
std::cout << Foo::get().geti();
return 0;
}