我对C++的了解是不应该假设全局实例的构造(和析构)的顺序.
当我用编译器std::cout和析构函数中使用的全局实例编写代码时,我遇到了一个问题.
std::cout也是iostream的全局实例.是否std::cout保证在任何其他全局实例之前进行初始化?
我写了一个简单的测试代码,它工作得很好,但我仍然不知道为什么.
#include <iostream>
struct test
{
test() { std::cout << "test::ctor" << std::endl; }
~test() { std::cout << "test::dtor" << std::endl; }
};
test t;
int main()
{
std::cout << "Hello world" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它打印
test::ctor
Hello world
test::dtor
Run Code Online (Sandbox Code Playgroud)
代码是否有可能无法按预期运行?