gpt4 book ai didi

c++ - 在 C++ 中定义类字符串常量?

转载 作者:IT老高 更新时间:2023-10-28 14:01:54 55 4
gpt4 key购买 nike

我看过这两种风格的代码,我不确定是否比另一种更好(这只是风格问题)?你有什么建议为什么你会选择一个而不是另一个。

 //Example1
class Test {

private:
static const char* const str;

};

const char* const Test::str = "mystr";

//Example2
class Test {

private:
static const std::string str;

};

const std::string Test::str ="mystr";

最佳答案

通常你应该更喜欢 std::string 而不是普通的字符指针。然而,在这里,用字符串字面量初始化的 char 指针有一个显着的好处。

静态数据有两种初始化方式。一种叫静态初始化,一种叫动态初始化。对于那些使用常量表达式初始化并且是 POD(如指针)的对象,C++ 要求它们的初始化在一开始就发生,在动态初始化发生之前。初始化这样的 std::string 将动态完成。

如果您有一个类的对象是某个文件中的静态对象,并且需要在其初始化期间访问该字符串,则您可以依赖它在使用 const char 时已经设置* const 版本,而使用 std::string 版本,它不是静态初始化的,你不知道字符串是否已经初始化 - 因为对象的初始化顺序跨翻译单元边界未定义。

关于c++ - 在 C++ 中定义类字符串常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/459942/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com