戻り値の仕組みについて
Posted: 2012年2月09日(木) 19:05
#include <iostream>
using namespace std;
int hoge(int bar) {
int foo = bar;
return foo;
}
int main() {
int fuga = hoge(7);
cout << fuga << endl;
return 0;
}
例えば、上の様なコードを考えます。
hoge関数はローカル変数int fooの値を返します。
そして、int fooが解放されるタイミングはhoge関数を抜けた瞬間だと思うのです。
疑問に思った所はhoge関数の戻り値でint fugaを初期化する所です。
もし、hoge関数内のint fooが解放されるタイミングがhoge関数を抜けた瞬間なら、int fugaを初期化する時にはint fooは解放されているはずで、初期化する値は消滅しているのではないかと思いました。
もしくは、関数の仮引数の様に、関数の戻り値を格納する変数が確保され、確保された変数に戻り値をコピーし、その変数でint fugaを初期化していると言う事でしょうか。