C ++设置变量常量

时间:2013-02-04 20:02:31

标签: c++

例如,如果我有

std::string test;

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

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

这可能吗?

3 个答案:

答案 0 :(得分:3)

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

const std::string s = "hi";

答案 1 :(得分:1)

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

在语言级别上不可能仅在 second 时重新分配某些内容时导致编译错误 - 为什么要这样做?其中一个是令人困惑的,两个发生的分配#将在运行时确定,而不是编译时间。

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

答案 2 :(得分:1)

另一个选择是在获得指定的字符串后使用const引用:

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

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