[英]Which function is responsible for class object initialization at global scope in C++?
我试图了解有关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
我不明白为什么? 哪个函数负责全局对象的初始化(例如__libc_start_main
调用int main
)?
还有什么样的初始化(静态或动态)? 从我看来,这是动态初始化。
哪个函数负责全局对象初始化
该标准未指定。
它仅指定在调用main()
之前对其进行初始化。 实现可以自由选择任何机制来实现。
还有什么样的初始化(静态或动态)?
目前尚不清楚您想要在这里暗示什么。 这是静态初始化。 但是,所有静态初始化均分为:
在您的情况下,它是动态初始化。
如果你有,
int var1;
它将被初始化为零。
如果你有
int var2 = 10;
它将被常量初始化。
如果你有
int var3 = someFunction();
它很可能会使用动态初始化进行初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.