//file1.cpp
extern const char* foo;
std::string bar = foo;
//file2.cpp
const char* foo = "foo";
这个标准是否保证bar被初始化为"foo"?或者它可能在foo设置之前被初始化,在构造函数中导致段错误,即SIOF的情况?
//file1.cpp
extern const char* foo;
std::string bar = foo;
//file2.cpp
const char* foo = "foo";
常量初始化是保证最先发生的(在本例中是foo
)。
所以
按照标准,
bar
会被初始化为“foo
”吗?
是的。
还是说它可能在
foo
被设置之前被初始化并在构造函数中引起段错误,即SIOF的情况?
不会。
来源:https://en.cppreference.com/w/cpp/language/constant_initialization