哪个函数负责C++全局范围内的类对象初始化?
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
我不明白的是为什么?哪个函数负责全局对象初始化(如int main
由__libc_start_main
调用(?
还有它是什么类型的初始化(静态或动态(?从我认为它是动态初始化。
哪个函数负责全局对象初始化
该标准没有具体说明这一点。
它仅指定在调用main()
之前初始化它们。实现可以自由选择任何机制来实现这一点。
还有它是什么类型的初始化(静态或动态(?
目前尚不清楚您在这里想暗示什么。它是静态初始化。但是,所有静态初始化都分为:
- 零初始化。
- 不断启动。
- 动态初始化。
在您的情况下,它是动态初始化。
如果你有,
int var1;
它将初始化为零。
如果你有
int var2 = 10;
它将不断初始化。
如果你有
int var3 = someFunction();
它很可能使用动态初始化进行初始化。
相关文章:
- 用C++中的CPerson(类)类型的对象初始化STL矢量
- 对象初始化中是否允许指向此成员的指针?
- 对象初始化后在C++中显示 char 数组时的异常行为
- 为什么两种不同的对象初始化方式给出不同的输出
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- afxmem.cpp中的对象初始化差异
- 删除通过取消引用新对象初始化的对象
- 如何使用sregex_token_iterator对象初始化向量
- 关于默认构造函数,对象初始化/使用C++ OOP
- C++ 基元类型初始化与对象初始化
- 哪个函数负责C++全局范围内的类对象初始化?
- C++中构造函数的对象初始化出现问题
- 如何修复模板 BST 类的对象初始化
- 无法在 QML/C++ 中使用绑定对象初始化 UI
- 为什么参数可以在对象初始化时通过赋值运算符传递给构造函数?
- 类对象初始化的二维向量
- GCC:当层次结构中存在虚拟继承时,C++11 内联对象初始化(使用 "this")不起作用
- 对象初始化
- 类对象初始化
- 使用从另一个类继承的类的对象初始化成员对象