何時創建並銷燬特定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