C では、一時オブジェクトに const 参照のみが許可されるのはなぜですか?
C では、一時オブジェクトの割り当ては const 参照に対してのみ許可されます。 、一方、非 const 参照は禁止されています。この制約により、特に一時オブジェクトの変更の可能性に関して多くの疑問が生じています。
広く知られているように、一時オブジェクトは一時的なものであり、その作成を含むステートメントが終了するとすぐに消えます。これは正当な懸念を引き起こします: 読み取りが許可されているのに変更が制限されるのはなぜですか?
この矛盾を理解するために、関数パラメータに関係する仮説的な状況を考えてみましょう。
void inc(double& x) { x += 0.1; } int i = 0; inc(i);
非 const 参照が一時パラメータを許可すると、このコードの動作は独特になります。 int 引数を参照渡ししたにもかかわらず、inc を呼び出した後も i の値は変化しません。これにより、予期しない非論理的な結果が発生します。
ただし、const 参照を許可すると、関数パラメータに渡される一時オブジェクトが誤って変更されることがなくなります。これにより、予期しない動作の可能性が防止され、const 参照を使用する意図が確実に維持されます。
以上がC で一時オブジェクトを非 Const 参照に渡せないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。