文件说明:
嵌套类描述了一个构造确保的对象 即使之前,标准的iostreams对象也是正确构造的 执行任意静态对象的构造函数。
见:
https://msdn.microsoft.com/en-gb/library/fbyc90zw.aspx
但是由于静态对象有一个未定义的init排序,ios_base::Init
如何确保它在它们之前运行?
答案 0 :(得分:0)
我会担心静态变量的初始化顺序是未定义的,但构造函数调用创建对象/变量(静态或非静态)的顺序是明确定义的。
答案 1 :(得分:0)
ios_base::Init
类嵌套在ios_base
类中。因此,当构造任何ios_base
实例时,也会运行ios_base::Init
构造函数。
使用ios_base
的对象的哪些可能的静态实例存在或者它们运行的顺序并不重要。重要的是ios_base::Init
能够运行并初始化首先是标准流(对ios_base::Init
的所有其他构造函数调用可能什么都不做,因为第一个构造函数调用已经完成了工作)。