0

例如,如果我有

std::string test;

我想在初始化后立即使测试保持不变。

test = "hi";
test = "test"; //this shouldn't work since I already initialized test to hi above

这可能吗?

4

3 回答 3

3

您可以声明它const并将其初始化为您感兴趣的值:

const std::string s = "hi";
于 2013-02-04T20:04:55.433 回答
1

首先,您应该了解 C 和 C++ 中赋值和初始化之间的区别。 std::string test;调用默认的字符串构造函数,所以test = "hi";也会失败。

在语言级别上,仅在第二次重新分配某些内容时才可能导致编译错误 - 为什么要这样做?一这会令人困惑,二是在一般情况下,发生的分配数将在运行时确定,而不是在编译时确定。

这里的正确使用是const在声明它的同一语句中使用和“分配” - 实际上是初始化,根本不分配 - 即const string str = "hi";.

于 2013-02-04T20:08:40.797 回答
1

另一种选择是在分配字符串后使用 const 引用:

std::string s = "hi";
const std::string & const_s = s;
const_s = "test" // compile-time error

但我同意这听起来你只是想用一个值初始化一个 const 字符串。

于 2013-02-04T20:13:11.077 回答