例如,如果我有c + + make變量不變一旦設置
std::string test;
我想使試驗恆量只要我初始化。
test = "hi";
test = "test"; //this shouldn't work since I already initialized test to hi above
這是可能的嗎?
例如,如果我有c + + make變量不變一旦設置
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
但我同意這聽起來像你只是想初始化一個常量字符串與價值。
在分配「hi」之前,它已經被初始化。 – chris
'std :: string const test =「hi」;'。 –