[C++]inline内联函数使用方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[C++]inline内联函数使⽤⽅法C++⽀持内联函数,⽬的是为了提⾼函数的执⾏效率,类似于C语⾔中的宏定义
内联函数在调⽤时将它在程序中的每个调⽤点展开,不⽤额外分配栈空间
内联函数的定义在⼀个源⽂件中出现⼀次,但在多个源⽂件中可以同时出现,只要保证完全相同即可。
所以内联函数可以直接在头⽂件中定义,即使被多次包含,也是完全相同的,因此不会报错。
inline 内联函数的使⽤⽅法:
inline 放在函数定义的返回值前⾯,就可以将函数指定为内联函数;仅仅放在声明函数前⾯时⽆效的
inline 返回值函数名(形参)
{
函数体
}
举例:
#include <iostream>
using namespace std;
// add 函数定义时有inline,声明时没有inline,但依然是内联函数
int add(int a, int b);
// dec 函数定义时没有inline,声明时有inline,但依然不是内联函数
inline int dec(int a, int b);
inline int add(int a, int b)
{
return (a + b);
}
int dec(int a, int b)
{
return (a - b);
}
int main(void)
{
// 调⽤add(2, 3)时直接被替换为(2 + 3)
cout << add(2, 3) << endl;
// 调⽤时不会替换,要进⾏压栈出栈操作
cout << dec(5, 3) << endl;
return0;
}
注意:
1、内联函数以代码增⼤的代价减少函数调⽤的开销,禁⽌滥⽤,只有函数体简单短⼩,才可以使代码更加⾼效
2、如果函数代码较长或有循环语句,使⽤内联函数会增⼤内存的消耗,不能使⽤内联函数
宏定义与内联函数的区别
1、宏定义是由预处理器控制实现,⽽内联函数是通过编译器控制实现
2、宏定义在预处理时就对其进⾏展开替换,⽽内联函数是在调⽤时对其展开替换
3、内联函数是真正的函数,但使⽤时像宏定义⼀样展开,取消了函数的参数压栈出栈的开销
4、宏定义不检查参数返回值等,只是对其展开,⽽内联函数会检查参数返回值等,相对更安全
5、宏定义在运⾏时不可以调试,⽽内联函数可以。