在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++内在原理还不太清楚,作为资深的伸手党,求大神粗来答疑解惑~~