文章目录
什么是内联函数?
内联函数是C++中的一种特殊函数,它可以像普通函数一样被调用,但是在调用时并不通过函数调用的机制,而是通过将函数体直接插入调用处来实现的。
在函数规模很小的情况下,函数调用的时间开销可能相当于甚至超过执行函数本身的时间,把它定义为内联函数,可大大减少程序运行时间。
如何提高运行时间?
- 答案:内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度。
使用内联函数的好处?
- 回答:使用内联函数可以大大减少由函数调用带来的开销,从而提高程序的运行效率。是一种用空间换时间的方法。
内联函数的使用:在生明或定义函数时在头部上加上inline关键字即可。
inline 返回值类型 函数名(函数参数){
//此处定义函数体
}
// 类内定义,隐式内联
class A {
int doA() { return 0; } // 隐式内联
}
// 类外定义,需要显式内联
class A {
int doA();
}
inline int A::doA() { return 0; } // 需要显式内联
使用注意事项
- 内联函数不能包括复杂的控制语句,如循环语句和switch语句。
- 只能将规模很小(一般5个语句以下)而使用频繁的函数声明为内联函数。
内联函数和宏定义的区别
- 内联函数在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。
- 内联函数可以访问类的成员变量,宏定义则不能。
- 内联函数在运行时可调试,而宏定义不可以。