关键字——inline
inline关键字的前世
个人理解,C++中inline关键字的出现可能与#define宏定义有关(define不是关键字)。因为#define宏定义在C语言中起到替换作用的,它的优点是:
- 1,可以提高程序的可读性,若程序中多处用到了某一段代码时可以使用宏替换,当这段代码出错时方便修改。
- 2,由于时直接替换,从而减少了系统的开销,提高了运行效率。
它也是有缺点的: - 1,增加代码量。
- 2,由于是代码直接替换,并不会检查参数是否合法,替换时容易出错。
- 3,出错不能调试宏。
今生……
inline是C++相对于C所独有的关键字,它的作用和C中的宏定义作用相似,但它不是替换,而是在函数调用时在调用点展开该函数,所以inline函数对于编译器而言必须是可见的。inline函数必须在调用该函数的每个文本文件中定义。它属于建议型关键字(使不使用inline机制编译器说了算)
- 1,典型的以空间换取时间的方式,节省函数调用时的栈帧开销。
- 2,如果函数体内有循环、递归时,编译器不会理会inline关键字,也就是说编译器这时不会听话的。
- 3,inline关键字只在定义时起作用,在声明前不起作用。
- 4,定义在类里面的成员函数默认是inline函数。
- 5,这时宏函数可以用inline替换。