特定のC++クラスの静的メンバーが作成され、破棄されるのはまさにいつですか? のは、私がWinVersion
クラスを定義したとしましょう:静的メンバーが作成され、破棄されるとき?
WinVersion.h
class WinVersion {
public:
// static methods
static WinVersion& Get();
static bool Is_NT();
// singleton
static WinVersion m_version;
// constructor
WinVersion();
private:
unsigned short m_PlatformId;
unsigned short m_MajorVersion;
unsigned short m_MinorVersion;
unsigned short m_BuildNumber;
};
WinVersion.cpp:
// static members
WinVersion WinVersion::m_version = WinVersion(); // unsure if it's good enough
// static functions
WinVersion& WinVersion::Get() {
return m_version;
}
bool WinVersion::Is_NT() {
return (m_version.m_PlatformId == VER_PLATFORM_WIN32_NT);
}
// constructor
WinVersion::WinVersion()
{
OSVERSIONINFO osinfo;
osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
...
}
m_version
静的メンバが作成および破棄されますか?例外の場合はどうなりますか?
あなたのコードがWindows NT上にあると想定するのはかなり安全だと思います。 – Puppy
*いつm_version静的メンバーが作成され、破棄されるのですか?* w.r.tまたは何かと比較してですか?静的メンバーの初期化の順序は、TUで宣言されている順序と同じです。 TUの向こう側に注文は定義されていません。 –
可能な複製:http://stackoverflow.com/q/1421671/777186 – jogojapan