以下のコードに似たものを書いていて、関数定義の本体内で誤って同じ関数を呼び出しました。
double function(double &value)
{
//do something with a here
if(some condition)
{
function(a);
}
return a;
}
次のような形式を検討してください。
int function(int &m) {
m = 2*m;
if(m < 20)
{
function(m);
}
return m;
};
int main() {
int a = 2;
std::cout <<"Now a = "<<function(a);
return 1;
}
私によると、これはコンパイルどころか実行すべきではありません。しかし、それは実行され、正しい結果が得られます
今 a = 32
関数の定義を「終了」する前に関数を呼び出しました。それでも、それは機能します。なんで?