Const 参照による右辺値の有効期間の延長
C では、 const 参照は不変のエイリアスとして機能するだけでなく、一時変数の有効期間も延長します。 C 委員会はなぜこの動作を実装することにしたのですか?
この機能の理論的根拠の 1 つは、実装の詳細をクラスや関数から隠すことです。行ベクトルまたは列ベクトルを返すことができる行列クラスを考えてみましょう。パフォーマンスを最適化するために、クラスは行優先または列優先の構成に基づいて内部値への参照を返すことを選択できます。クライアントに戻り値を const 参照として受け入れるよう要求することで、クラスは参照と値をシームレスに切り替えて、クライアントを実装の詳細から保護できます。
歴史的に、右辺値の有効期間を延長するという決定は、方法の不一致に対処したいという要望から生まれました。リファレンスが一時的に扱うようになったのは 1993 年です。当時は RVO (戻り値の最適化) は存在していませんでした。一時変数の参照へのバインドを禁止すると、パフォーマンスが大幅に低下する可能性があります。したがって、委員会は、一時ファイルの寿命を延長しながらバインディングを可能にし、参照使用中の一時ファイルの可用性を確保するソリューションを選択しました。
この理論的根拠は、1993 年に C 標準委員会に提出された提案 N0345.pdf に文書化されています。 const 参照は右辺値の有効期間を延長することで、より優れた抽象化を促進し、コードの柔軟性を維持し、関数からオブジェクトを返すときのパフォーマンスを最適化します。
以上がConst 参照が C の一時変数の寿命を延ばすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。