C++内联函数在编译时编译器使用相应的函数代码代替函数调用。对于内联代码,程序无需跳到另一个地方执行代码再调回来,因而可以节省时间,但是也消耗了更多的内存。
inline double square(double x) { return x * x; }
注意:在类内定义的函数C++编译器默认为内联函数,在类外定义的内联函数要加inline(声明时可以不加)。
内联函数由 编译器处理,直接将编译后的函数体插入调用的地方,
宏代码片段 由预处理器处理, 进行简单的文本替换,没有任何编译过程。
C++中内联编译的限制:
不能存在任何形式的循环语句
不能存在过多的条件判断语句
函数体不能过于庞大
不能对函数进行取址操作
函数内联声明必须在调用语句之前
内联函数优缺点总结:
优点:避免调用时的额外开销(入栈与出栈操作)
代价:由于内联函数的函数体在代码段中会出现多个“副本”,因此会增加代码
段的空间