内联函数

 

在函数声明或定义时,将inline关键字加在函数返回类型前面的就是内联函数。

例1:

 

View Code
 1 #include<iostream>
 2 using namespace std;
 3 inline int max(int a,int b){
 4     return a>b?a:b;
 5 }
 6 int main()
 7 {
 8     int x1=max(3,4);
 9     int x2=max(7,2);
10     int x3=max(x1,x2);
11     cout<<x1<<' '<<x2<<' '<<x3<<endl;
12     return 0;
13 }

 

内联函数的声明,定义和调用方法与普通函数相同,但C++对它们的处理方式不一样。

如果一个函数被定义为内联函数,在编译时,C++将用内联函数的代码替换对它的每次调用。上面的main函数多次调用的函数max(),C++在编译时会将main函数中的函数调用替换成如下形式:

例2:

View Code
 1 #include<iostream>
 2 using namespace std;
 3 inline int max(int a,int b){
 4     return a>b?a:b;
 5 }
 6 int main()
 7 {
 8     int x1=3>4?3:4;
 9     int x2=7>2?7:2;
10     int x3=x1>x2?x1:x2;
11     cout<<x1<<' '<<x2<<' '<<x3<<endl;
12     return 0;
13 }

内联函数不需要建立函数调用时的运行环境,不需要进行参数传递,也不需要执行指令在主程序和函数指令之间进行转移,所以内联函数执行时间更快。当然,由于每次在调用内联函数时,都会插入它的函数代码,所以它会是程序代码增加,占用更多的内存空间。

说明:

1.内联函数的声明或定义必须在函数的调用之前完成。

例3:

View Code
1 inline int min(int a,int b);//声明min是内联函数
2 void main(){
3     int x=min(23,78);
4 }
5 int min(int a,int b)//可以再本行的最左端加上inline,这里虽省略了,但意义相同
6 {
7     return a<b?a:b;
8 }

在本例中,min函数并未冠以inline关键字(main函数后面的min()是定义),但它仍是内联函数。但下面的例子中的min()就不是内联函数,在函数定义中的内联函数无效。

例4:

View Code
1 inline int min(int a,int b);//声明min是普通函数
2 void main(){
3     int x=min(23,78);
4 }
5 int min(int a,int b)//尽管有inline关键字,但min是个普通函数
6 {
7     return a<b?a:b;
8 }

虽然在最后的函数min()定义时指定它为内联函数,但在main中调用min()时,编译器只能够根据声明确定min()是个普通函数。

2.一般而言只有几行代码的(最好只有1——5行),经常被调用的简单函数才适宜作为内联函数。以下3种函数不能作为内联函数:递归函数,函数体内含有循环,switch,goto语句之类的复杂结构的函数,具有较多代码的大函数。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/acmer-roney/archive/2012/10/23/2736309.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值