我可以将main()中的代码替换为全局对象的构造函数吗?

iam*_*ind 1 c++ program-entry-point global-variables

假设init是之前初始化的最后一个全局对象main()(我们不需要任何命令行参数),我可以这样做:

struct int_main {
  int_main ()
  {
    //... start code execution
  }
}init;

int main ()
{
}
Run Code Online (Sandbox Code Playgroud)

以这种方式提出问题,因为我有兴趣知道是否main()保证除了:

  1. argc,来自命令行的argv
  2. 所有全局对象都在它之前初始化

Sim*_*ter 5

您无法保证在对象之前构造所有全局对象,因此您可能不会使用其中任何对象.这包括iostream的重要部分.

我通常使用main()只构造应用程序对象的模式,并在其上调用一个方法来执行实际工作.