一時オブジェクトへの非 const 参照が禁止される理由
C では、一時オブジェクトを非 const 参照に割り当てることを禁止しています。この制限は、一時オブジェクトが作成されたステートメントの後に消えるという事実に起因しています。一時オブジェクトへの非 const 参照を許可すると、未定義の動作が発生する可能性があります。
次のコードを考えてみましょう:
String& a = String("test"); // Error
このコードは、一時的な String オブジェクトを非 const 参照に割り当てようとします。 。ただし、 a は const 参照ではなく、一時オブジェクトは変更できないため、これは許可されません。
この制限の一般的な理由には次のようなものがあります。
C では、一時オブジェクトからの読み取りは可能ですが、一時オブジェクトへの書き込みはできません。読み取りによってオブジェクトの状態は変更されません。ただし、一時オブジェクトに書き込むと、書き込み操作が完了する前にオブジェクトが破棄される可能性があるため、予期しない結果が生じる可能性があります。
したがって、これらの潜在的な問題を防ぐために、C では一時オブジェクトへの非 const 参照を制限しています。安全な読み取りのために const 参照を許可します。この制限は、プログラムの正確性を確保し、一時オブジェクトの変更によって生じる可能性のある未定義の動作を防ぐのに役立ちます。
以上がC で一時オブジェクトを非 Const 参照に代入できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。