在 C++ 中,如果我想定义一些可以在不同的类、函数、文件中使用的非本地 const 字符串,我知道的方法是:
使用定义指令,例如
#define STR_VALUE "some_string_value"
const 类成员变量,例如
class Demo { public: static const std::string ConstStrVal; }; // then in cpp std::string Demo::ConstStrVal = "some_string_value";
const 类成员函数,例如
class Demo{ public: static const std::string GetValue(){return "some_string_value";} };
现在我不清楚的是,如果我们使用第二种方法,变量 ConstStrVal 是否总是在任何代码实际使用之前初始化为“some_string_value”?由于“静态初始化顺序惨败”,我对此感到担忧。如果这个问题是有效的,为什么每个人都使用第二种方法?
哪个是最好的方法,2 还是 3?我知道#define 指令不尊重范围,大多数人不推荐它。
谢谢!