특정 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