为什么要使用内联函数?
因为函数调用时候需要创建时间、参数传入传递等操作,造成了时间和空间的额外开销。C++追求效率所以引入了内联的概念。
通过编译器预处理,在调用内联函数的地方将内联函数内的语句Copy到调用函数的地方,从而提高了效率,减少了一些不必要的开销。
内联函数定义?
使用关键字:inline 函数定义形式:inline [返回类型] [函数名]( 参数表 ){[函数体]}
例子:
当调用max函数本身所产生的开销可能比函数内语句执行开销大,所以我们采用内联函数,减少调用开销。
#include<iostream> using namespace std; inline int Max(int a,int b){ //定义内联函数 if(a>b) return a; else return b; } int main(){ int a = 3; int b = 5; cout << "Max:" << Max(a,b) << endl; //内联函数的定义 }
当调用了这个Max函数时,经过编译器预处理后真正执行的程序可能是下面这个样子
#include<iostream> using namespace std; int main(){ int a = 3; int b = 5; int temp; if(a>b) temp = a; else temp = b; cout << "MAX:" << temp << endl;; }
内联函数的弊端
使用内联函数后虽然调用函数的开销降低了,但是有利必有弊,内联函数会导致主函数指令增多、函数体积增大等情况。
开发中要根据情况正确使用内联函数 。