gpt4 book ai didi

c++ - 如何初始化静态本地 POD 常量?懒还是不懒?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:03 25 4
gpt4 key购买 nike

POD 表示没有构造函数和析构函数的原始数据类型。

我很好奇,编译器如何处理 POD 静态局部变量的惰性初始化。如果函数要在多线程应用程序中的紧密循环内运行,那么惰性初始化意味着什么?这些是可能的选择。哪个更好?

void foo_1() {
static const int v[4] = {1, 2, 3, 4};
}

void foo_2() {
const int v[4] = {1, 2, 3, 4};
}

这个怎么样?没有惰性初始化,但语法略显笨拙?

struct Bar
{
static const int v[4];

void foo_3()
{
// do something
}
};

const int My::v[4] = {1, 2, 3, 4};

最佳答案

当用常量数据初始化静态变量时,我熟悉的所有编译器都会在编译时初始化值,因此没有任何运行时开销。

如果变量不是静态的,则必须在每次函数调用时分配它,并且必须将值复制到其中。我想如果它是一个 const 变量,编译器可能会将其优化为 static,但 const-ness 可以被丢弃。

关于c++ - 如何初始化静态本地 POD 常量?懒还是不懒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513350/

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