gpt4 book ai didi

c++ - 何时创建和销毁静态成员?

转载 作者:行者123 更新时间:2023-11-30 00:38:32 25 4
gpt4 key购买 nike

特定 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静态成员?如果出现异常会怎样?

最佳答案

静态成员在main()之前初始化,在main()返回后按照创建的逆序销毁。

静态成员是静态分配的,它们的生命周期从程序开始到结束。

异常不适用于静态成员初始化,因为您无法在那里捕获静态对象将抛出的任何异常。你不应该“期望”在你的程序开始之前就出现静态成员初始化问题,这显然是一个错误。你的编译器和链接器会让你知道静态定义的任何问题。

关于c++ - 何时创建和销毁静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com