Что я знаю о 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;
}
Он печатает
test::ctor
Hello world
test::dtor
Есть ли вероятность, что код не выполняется должным образом?