gpt4 book ai didi

c++ - 初始化静态变量 : position dependent?

转载 作者:行者123 更新时间:2023-11-30 04:26:24 26 4
gpt4 key购买 nike

我有以下文件:

H文件

class myclass
{
static int variable;

// constructor
myclass();
}

Cpp文件

// initialize this variable
int myclass::variable = 0;

myclass::myclass()
{
// I use here the static variable
}

我的问题是:什么时候初始化静态变量?在构造函数之前还是之后?

如果我把

int myclass::variable = 0;

类构造函数定义之后的行?是否仍会在类的对象实例化之前进行初始化?

最佳答案

像这样的静态将在应用程序启动时初始化,我认为这将在您实例化“myclass”之前进行。

基本上,由于这个原因,您在哪里定义它并不重要。

但是,如果您创建“myclass”的全局拷贝,那么我相信您会遇到问题。将定义放在变量初始化之前是完全合法的,例如

myclass globalInstance;
int myclass::variable = 0;

在上面的例子中,我非常确定 myclass 的构造函数将在变量初始化之前被调用。在这种情况下,最好在变量之后定义 myclass。

编辑:参见 http://www.parashift.com/c++-faq/static-init-order.html

关于c++ - 初始化静态变量 : position dependent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591221/

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