首页 > 解决方案 > 是否保证在 std::string 之前初始化指向字符串文字的指针?

问题描述

//file1.cpp
extern const char* foo;
std::string bar = foo;

//file2.cpp
const char* foo = "foo";

标准是否保证 bar 被初始化为"foo"?或者它是否可以在构造函数中设置和段错误之前被初始化,foo即 SIOF 的情况?

标签: c++language-lawyerstatic-initialization

解决方案


保证首先发生常量初始化(foo在这种情况下)。

所以

标准是否保证 bar 被初始化为“foo”?

是的。

或者它是否可以在 foo 被设置和构造函数中的段错误之前被初始化,即 SIOF 的情况?

不。

来源:https ://en.cppreference.com/w/cpp/language/constant_initialization


推荐阅读