上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.8 内联函数
在函数声明或定义时,将inline关键字加在返回类型前面的函数就是内联函数。
【例2-17】 求两个数最大值的函数inline( )。
//Eg2-17.cpp #include<iostream.h> inline int max(int a,int b){ return a>b?a:b; } void main(){ int x1=max(3,4); int x2=max(7,2); int x4=max(x1,x2); }
内联函数的声明、定义和调用方法与普通函数相同,但C++对它们的处理方式不一样。在编译时,C++将用内联函数的代码替换对它的每次调用。上面的main()函数多次调用了内联函数max(),C++在编译此程序时会将main()函数中的函数调用替换成如下形式:
void main(){ int x1=3>4?3:4; int x2=7>2?7:2; int x4=x1>x2?x1:x2; }
函数inline()不需要建立函数调用时的运行环境,不需要进行参数传递,所以执行时间更快。当然,由于每次调用函数inline()时,都会插入它的函数代码,所以它会使程序的代码增加,占用更多的存储空间。
说明:① 内联函数的声明或定义必须在函数的调用之前完成;② 一般而言,只有几行程序代码的(最好只有1~5行)、经常被调用的简单函数才适宜作为内联函数。以下3种函数不能作为内联函数:递归函数,函数体内含有循环、switch、goto语句之类复杂结构的函数,或者具有较多程序代码的大函数。