【发布时间】:2013-06-30 05:59:27
【问题描述】:
我正在编写类似于以下代码的内容,但我不小心在函数定义的主体内调用了相同的函数。
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
我什至在“完成”定义之前就调用了该函数。然而,它有效。为什么?
【问题讨论】: