0

もうすぐ試験に向けて運動していたのですが、難しい質問があります。

質問は:

コードの何が問題で、どのように正しいのでしょうか?

const long limit = 1000L;
long &ref = limit;

今、C++コードとして打ち込んでみたら、このサンプルコードで参照(&)が間違いだったので、長いref = limitと書いて解決しました。ただし、これで問題が解決する理由を知りたいです。上記のコードが間違っているのはなぜですか?

4

3 に答える 3

2

const最初のコードは、変数への非 const 参照を作成しようとしていますが、これは許可されていません。参照は元の変数を参照するため、 への代入refは の値を変更する (しようとする) ことにlimitなりlimitますconst

2 番目は変数を作成し、const 変数の値で初期化します。

const への参照を作成することもできます。long const &cref = limit;

于 2013-06-09T16:39:25.807 に答える
0
Whats wrong with the code and how would it be correct?

const long limit = 1000L;
long &ref = limit;

例をさらに一歩進めます。

ref = 1001L; // ooops! we just changed the value of limit

参照に値を割り当てると、元の変数 (この場合は const) が変更されます。コンパイラでは、この可能性を回避するために、const 値への非 const a 参照を作成できません。

于 2013-06-09T16:47:09.510 に答える
0

私の答えは次のとおりです。

  • long を試行するため、コードの形式が正しくありません。const オブジェクトで初期化できず、long 型の左辺値を取得します。
  • 最も簡単な修正は、その行を削除することです。それ以上に、その目標に関する情報を提供する必要があります。
于 2013-06-09T16:48:49.980 に答える