gpt4 book ai didi

C++单例初始化顺序

转载 作者:太空狗 更新时间:2023-10-29 20:48:55 33 4
gpt4 key购买 nike

我有

class Foo
class Bar

现在,我要

Foo* Foo::singleton = new Foo();
Bar* Bar::singleton = new Bar();

都先初始化

int main()

被调用。

另外,我想

Foo::singleton

先初始化

Bar::singleton

无论如何我可以确保这一点吗?

谢谢!

最佳答案

在同一翻译单元中定义的全局变量(如单例)按照它们定义的顺序进行初始化。因此,将两个单例的定义以正确的顺序放在同一个源文件中。

如果它们在不同的源文件中定义,则它们的初始化顺序将是未指定的(“static initialization order fiasco”)。

关于C++单例初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2278370/

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