首页 新闻 会员 周边

递归函数的内敛

0
[待解决问题]

在Effective C++第8章对编译器将代码内敛化的过程的解释为:

1,将内联方法的代码复制到调用点;

2,为内联方法的局部变量分配内存;

3,将内联方法的参数和返回值映射到调用者的数据空间。

 

因此小弟想,对递归函数应用上面的规则,那么每次把内联函数复制到调用点,都会出现新的递归调用点,岂不是编译器将陷入死循环直到宕机?但实际上这样的代码却是可以正常运行的。

 

class A{
public:
    inline void f(unsigned const i)
    {
        if (0==i) return;
        f(i-1);
    }
};

main()
{A a;a.f(10);}

 

小弟虽然写过不少C++了,Effective C++还是第一次看,对C++内在原理还不太清楚,作为资深的伸手党,求大神粗来答疑解惑~~ 

chng的主页 chng | 初学一级 | 园豆:6
提问于:2014-09-29 14:55
< >
分享
所有回答(1)
0

 

 

 

 

乐享程序员 | 园豆:930 (小虾三级) | 2014-09-30 09:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册