gpt4 book ai didi

c++ - 哪个函数负责 C++ 中全局范围内的类对象初始化?

转载 作者:行者123 更新时间:2023-11-27 23:45:49 25 4
gpt4 key购买 nike

我想了解更多有关 C++ 中全局范围对象初始化的信息。对于全局范围内的 class/struct 对象,哪个函数负责它的初始化?

考虑以下示例:

#include <iostream>

struct foo {
foo() {
std::cout << "foo's constructor" << std::endl;
}
};

foo bar;

int main() {
std::cout << "main" << std::endl;
return 0;
}

我知道输出将是:

foo's constructor
main

我不明白的是为什么?哪个函数负责全局对象初始化(比如 int main__libc_start_main 调用)?

还有它是哪种初始化(静态或动态)?我认为这是动态初始化。

最佳答案

Which function is responsible for global object initialization

标准没有规定。

它只指定它们在 main() 被调用之前被初始化。实现可以自由选择任何机制来实现。

Also what kind of initialization is it (static or dynamic)?

不清楚您在此处试图暗示什么。它是静态初始化。但是,所有静态初始化分为:

  1. 零初始化。
  2. 持续初始化。
  3. 动态初始化。

在您的情况下,它是动态初始化。

如果你有,

int var1;

它将被零初始化。

如果你有

int var2 = 10;

它将被常量初始化。

如果你有

int var3 = someFunction();

它很可能会使用动态初始化进行初始化。

关于c++ - 哪个函数负责 C++ 中全局范围内的类对象初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50689454/

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