例如,如果我有
std::string test;
我想在初始化后立即使测试保持不变。
test = "hi";
test = "test"; //this shouldn't work since I already initialized test to hi above
这可能吗?
例如,如果我有
std::string test;
我想在初始化后立即使测试保持不变。
test = "hi";
test = "test"; //this shouldn't work since I already initialized test to hi above
这可能吗?
您可以声明它const
并将其初始化为您感兴趣的值:
const std::string s = "hi";
首先,您应该了解 C 和 C++ 中赋值和初始化之间的区别。 std::string test;
调用默认的字符串构造函数,所以test = "hi";
也会失败。
在语言级别上,仅在第二次重新分配某些内容时才可能导致编译错误 - 为什么要这样做?一这会令人困惑,二是在一般情况下,发生的分配数将在运行时确定,而不是在编译时确定。
这里的正确使用是const
在声明它的同一语句中使用和“分配” - 实际上是初始化,根本不分配 - 即const string str = "hi";
.
另一种选择是在分配字符串后使用 const 引用:
std::string s = "hi";
const std::string & const_s = s;
const_s = "test" // compile-time error
但我同意这听起来你只是想用一个值初始化一个 const 字符串。