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

标签 c++ global-variables program-entry-point

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

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

int main ()
{
}

以这种方式问这个问题,因为我很想知道 main() 是否保证除了:

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

最佳答案

您不能保证所有 全局对象都在您的对象之前构造,因此您可能不会使用它们中的任何一个。这包括 iostream 的重要部分。

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

关于c++ - 我可以将 main() 中的代码替换为全局对象的构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619796/

相关文章:

c# - 如何在 C# 中创建未转义的十六进制字节字符串

c++ - 由于更新到 Xcode 10 文件未找到错误/派生数据

c++ - Armadillo+NVBLAS 变成 RcppArmadillo+NVBLAS

C - 将堆内存分配给全局变量

c++ - 使用自定义分配器及其替代方案重载基本类型

c# - 如何从另一个类引用 3D 数组?

c++ - 将 map<double, tuple<double, double>> 复制到 map<double, double> 没有循环?

java - 如何在main中使用方法变量?

c++ - SFML 在另一个类中绘制移动 Sprite