-
在函数定义中使用,将函数声明为内联函数,在该函数的调用处直接展开
-
特点:
-
只是一个对编译器的建议
-
只适合在功能简单的函数处定义,不能包含
for
、while
、switch
,并且不是递归函数 -
inline
在编译器展开,而不是链接时,所以内联函数和其调用函数必须在同一个编译单元内 -
定义在
class
、struct
、union
内的函数,不管是不是friend
,都会被隐式的声明为内联 -
构造 与 析构 函数不一定是内联的
-
当虚函数表现出多态性时不是内联的,多态处在运行期,编译器不知道运行时虚函数会调用哪个代码
-
-
优点:
-
和宏一样在被调处展开,省去了参数压栈、栈帧的开辟与回收、结果返回等过程,能够提高函数的执行效率
-
可以进行 安全检查 和 类型检查,而宏不会
-
可以作为函数被调试
-
-
缺点:
-
若函数体代码比较长,内联将导致高内存消耗(无论被调用多少次,都会将内联函数展开)
-
若函数的 执行 比 调用 的开销大,那么内联的效率收获就很低
-
-
参考链接: