二级C++函数:内联函数(inline)

二级C++函数:内联函数(inline),第1张

二级C++函数:内联函数(inline),第2张

在c++中,为了解决一些频繁调用的小函数在栈空或被调用栈之间消耗大量内存的问题,特别引入了inline修饰符,称为inline function。

大概说到这,很多人还不明白stack 空室是什么。其实stack 空 room指的是存放程序本地数据的内存空空间。系统下,stack 空空间有限,如果频繁大量使用,会造成stack 空。

让我们来看一个例子:

# include
# include
使用命名空间std

内联字符串dbtest(int a);//函数的原型声明为inline,即inline function

void main()
{
for(int I = 1;i {
cout 0)?“奇”:“偶”;

}

上面的例子是标准内联函数的用法。表面上看不到使用内嵌装饰的好处。其实内部的工作就是把每个for循环内部所有调用dbtest(i)的地方都改成(i%2>0)?“奇数”:“偶数”这避免了反复调用函数造成的堆栈内存消耗。

说到这,可能很多人会问,既然inline这么好,不如把所谓的函数都声明为inline。嗯,这个问题要注意。内联的使用受到限制。内联只适用于函数体中代码简单的函数,不能包含while switch等复杂的结构控制语句,也不能内联。函数本身不能是直接递归函数(内部也调用自己的函数)。

这里不得不说一下C语言中广泛使用的#define语句。是的,define可以做内联的工作,但是define会有副作用,尤其是不同类型的参数导致的错误。可以看出,inline的约束性更强,可以让编译器检查出更多的错误,所以在c++中不建议使用define。

更多关于内联函数的例子一举多得,灵活运用也要看学习者自己。我在这里只是提供一些建议,让大家尽可能多的学习一些c++中新的、高级的特色知识点。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C++函数:内联函数(inline)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情