相关疑难解决方法(0)

是否保证std :: cout被初始化?

我对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)

代码是否有可能无法按预期运行?

c++ constructor global-variables

40
推荐指数
2
解决办法
5013
查看次数

标签 统计

c++ ×1

constructor ×1

global-variables ×1