C++ 语法实验室之 inline 关键字


关于inline关键字,可以说是一个简单关键字,先直接总结一下这个关键字要领吧, 再说为什么他是宏的一种很好的补充


1:在类中声明同时定义的成员函数,自动转化为内联函数

也就是说想如下函数d实际上在编译的过程就转化为内联函数。

 class A()

       {

             void c();// not a inline function;

             void d(){ print("d() is a inline function.");}

        }

2: inline关键字必须和函数体定义放在一起才可以实现内联,仅仅将inline放在函数声明之前不起任何作用。

3:inline指令就象register,它只是对编译器的一种提示,而不是命令。也就是说,只要编译器愿意,它就可以随意地忽略掉你的指令,事实上编译器常常会这么做。

4:内联函数的运行速度比常规函数快一些,但代价是需要占用更多的内存空间,若在程序中多个地方调用同一个内联函数,该程序需要包含有该函数代码的多次拷贝。由于在编译时将函数休中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。

5:内联函数要特别慎用,实际上内联函数应该里面只有极少的简短代码,而且通常不含switch以及类构造析构过程。

内联函数是宏的一种很好的补充

注意:虽然内联函数和宏都是用代码量换执行效率,以直接展开代码方式来代替普通函数,但是内联有以下优点

1.内联函数在运行时可调试,而宏定义不可以;
2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 
3.内联函数可以访问类的成员变量,宏定义则不能; 

4.宏在有时会发现无法预料的错误如下:

#define MAX(a,b) ((a)>(b)?(a):(b)) 

int a=1,b=0;MAX(a++,b); //a被增值2次




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值