【c++手记】关于inline使用
inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。
《c++ primer》P221
将一部分的小操作(如两int型变量比较)定义为一个函数有几点好处:
1.阅读和理解一个函数的调用,比读一条用等价的条件表达式容易得多
2.修改函数比修改每一处表达式容易
3.使用函数保证统一行为
4.函数可以重用,不必重写代码
【一般函数与内联函数区别】
but,写成函数有个缺点:调用函数比调用表达式要慢!调用函数工厂是需要:保存寄存器;返回时恢复;负责实参;程序必须转向一个新位置执行。
使用内联函数可以帮助解决以上问题。
【编译层面】
将函数指定为内联函数,程序中每个调用点“内联地”展开,如:
cout<<add(a,b);//add(int,int)为内联函数
编译的时候就会变成
cout<<a+b;
【使用方法】
1.在函数返回类型上前加上关键字inline就将函数指定为内联函数(一般为声明与实现分离情况,即声明在头文件,实现在源文件)
2.在声明处直接定义此函数,可加可不加inline(即声明与实现皆在头文件时候)
【Warning】
1.内联说明(inline specification)对于编译器来说只是一个建议,编译器可以选择忽略建议
2.内联机制仅适用于优化小,只有几行代码而且经常别调用的函数,大多数编译器不支持递归函数的内联,且一个1000多行代码的函数也不太可能在调用点内联展开!
3.内联函数应该在头文件中定义!