繁体   English   中英

哪个函数负责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

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

还有什么样的初始化(静态或动态)? 从我看来,这是动态初始化。

哪个函数负责全局对象初始化

该标准未指定。

它仅指定在调用main()之前对其进行初始化。 实现可以自由选择任何机制来实现。

还有什么样的初始化(静态或动态)?

目前尚不清楚您想要在这里暗示什么。 这是静态初始化。 但是,所有静态初始化均分为:

  1. 零初始化。
  2. 不断初始化。
  3. 动态初始化。

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

如果你有,

int var1;

它将被初始化为零。

如果你有

int var2 = 10;

它将被常量初始化。

如果你有

int var3 = someFunction();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM