通识
构造函数和析构函数都是inline函数;
inline函数在调用时,程序不会跳到另一个位置执行代码,然后再跳回来。所以内联函数的运行速度比常规函数快,但是需要占用更多的内存;
一些频繁调用的代码量小的函数可以写成inline函数,避免了频繁调用函数对栈内存重复开辟所带来的消耗;
inline和宏的区别
内联函数在编译时展开,而宏在预编译时展开;
在编译的时候,内联函数直接被嵌入到目标代码中去,而宏只是一个简单的文本替换;
inline的使用方法
- 内联函数的定义要在头文件中!!!这点很重要
因为在调用内联函数时,要保证内联函数的定义让编译器"看"到,所以必须放在.h文件中; - 关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用:
// 这种写法,adder函数并未成为起到inline的作用
inline int adder(int a, int b);
int adder(int a, int b) {
return a + b;
}
// inline必须和函数实现放在一起才能生效
int adder(int a, int b);
inline int adder(int a, int b) {
return a + b;
}