例如,如果我有
std::string test;
我想在初始化时立即使测试保持不变。
test = "hi";
test = "test"; //this shouldn't work since I already initialized test to hi above
这可能吗?
答案 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字符串。