もうすぐ試験に向けて運動していたのですが、難しい質問があります。
質問は:
コードの何が問題で、どのように正しいのでしょうか?
const long limit = 1000L; long &ref = limit;
今、C++コードとして打ち込んでみたら、このサンプルコードで参照(&)が間違いだったので、長いref = limitと書いて解決しました。ただし、これで問題が解決する理由を知りたいです。上記のコードが間違っているのはなぜですか?
const
最初のコードは、変数への非 const 参照を作成しようとしていますが、これは許可されていません。参照は元の変数を参照するため、 への代入ref
は の値を変更する (しようとする) ことにlimit
なりlimit
ますconst
。
2 番目は変数を作成し、const 変数の値で初期化します。
const への参照を作成することもできます。long const &cref = limit;
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 参照を作成できません。
私の答えは次のとおりです。