什么是内联函数
内联函数是c++为提高程序运行速度所做的一项改进。常规函数与内联函数之间的主要区别在于c++编译器如何将他们组合到程序中。
编译过程的最终产品是可执行程序,由一条条机器语言指令组成,每条指令都对应一个内存地址。当执行一些语句
for (条件) {
if (判断){
statement;
else {
statement;
}
如上述的循环或分支语句,有时会跳过一些指令跳转到特定地址。常规函数的调用也就是使函数跳到宁一个地址并在结束时返回。这样的来回跳跃意味着一定的开销。
而内联函数就是使用相应的函数代码替换函数调用,这也就意味着无需反复的来回跳跃,但代价是内存开销更大。如果程序在10个不同的地方调用内联函数,意味着有10份相应的函数代码。
如何使用这种特性
必须采用以下两种措施之一
在函数声明前加上关键字inline
在函数定义前加上关键字inline
但是如果你加上关键字inline
这个函数也不一定就是内联函数。如果这个函数过于复杂或者是递归的情况,编译器就不会认为其是内联函数
内联与宏
如果使用宏执行了类似函数的功能,应该考虑转化为内联函数
#define SQUARE(X) X*X
这是一个计算平方的宏,但这并不是通过传递参数实现,而是通过文本替换实现
auto a = SQUARE(5.0);
auto b = SQUARE(4.0 + 7.5);
std::cout<<a<<std::endl<<b<<std::endl;
结果为:
25
41.5
a的结果为想要的,但是b就有些奇怪了,这里看下b的运行方式 b = 4 + 7.5 * 4 + 7.5;