何时创建并销毁特定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