内联函数的概念
1.内联函数介绍
内联函数是C++为提高程序运行速度所做的一项改进。
C++内联函数提供了另一种选择。内联函数的编译代码与其他程序代码“内联”起来了。也就是说,编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,再跳回来。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该函数代码的10个副本。
应有选择地使用内联函数。如果执行函数代码的时间比处理函数调用机制的时间长,则节省的时间将只占整个过程的很小一部分。如果代码执行时间很短,则内联调用就可以节省非内联调用使用的大部分时间。另一方面,由于这个过程相当快,因此尽管节省了该过程的大部分时间,但节省的时间绝对值并不大,除非该函数经常被调用。
2. 内联函数的定义:
函数声明定义前添加inline关键字
#include <iostream>
#include <string>
using namespace std;
inline void fun(int a)
{
cout << "a:" << a << endl;
}
int main()
{
fun(1);
cout << "a:" << 1 << endl;//大致等价上式
return 0;
}
3.内联函数的特点:
1)他是一个函数,调用与普通函数一致
与带参宏的差别示例:
#include <iostream>
#include <string>
using namespace std;
inline int fun(int x)
{
return x + x;
}
#define ADD(x) x+x //宏定义 带参宏
int main()
{
cout << "ADD:" << ADD(1) * ADD(3) << endl;//1+1*3+3=7
cout << "fun:" << fun(1) * fun(3) << endl;//(1+1)*(3+3)=12
return 0;
}
2)通过内存膨胀来减少函数的跳转
3)函数体代码过长,或者函数体中有循环,有递归语句,不建议使用内联
4)函数体是简单的赋值语句或者返回语句,而且使用频率高,建议使用内联