const参照に関する多くの記事を読んだが、探していたものが見つかりませんでした。 一時変数をconst参照にバインドするメカニズムについての私の仮定を修正して、寿命を延ばすことはできますか?一時変数へのconst参照とそのメカニズム
int Foo(){return 3;}
int main(){
const int& ref = Foo();
return 0;
}
Foo
レジスタに位置し、通常はその後棄却され、一時的な無名の値を返します。それをconst参照にバインドすると、コンパイラはそれを却下しないように指示しますが、メモリ内の値をref
のスコープとref
というエイリアスで保存します。
これはどのように動作するのですか?
これらの現代では、特に強力な最適化で通常コンパイルされるC++のような言語について言及するとき、レジスタと「メモリ」について言及するのは、これらの現代における過度の単純化です。あなたがソースに何かを見ているからといって、それが存在する必要があること、またはあなたが期待するかもしれない場所に存在する必要があることを意味するものではありません。たとえば、コンパイル時に 'int main(){return 0;}'に相当するコードを記述します。 '3'は決してどこにも格納されません。 –