たとえば、私が持っている場合
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";
も失敗します。
言語レベルでは、何かが再割り当てされた2回目だけでコンパイル エラーを引き起こすことはできません。1 つは混乱を招き、2 つは発生する割り当ての数が、コンパイル時ではなく実行時に決定されるという一般的なケースです。
ここでの適切な使用法はconst
、それが宣言されている同じステートメント、つまりconst string str = "hi";
.
別のオプションは、割り当てられた文字列を取得したら const 参照を使用することです。
std::string s = "hi";
const std::string & const_s = s;
const_s = "test" // compile-time error
しかし、const 文字列を値で初期化したいだけのように聞こえることに同意します。