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";も失敗します。

言語レベルでは、何かが再割り当てされた2回目だけでコンパイル エラーを引き起こすことはできません。1 つは混乱を招き、2 つは発生する割り当ての数が、コンパイル時ではなく実行時に決定されるという一般的なケースです。

ここでの適切な使用法は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 に答える