inline函数讲解

什么是inline函数:

        inline函数是在编译时进行内联代码的替换,类似于宏,但与宏不同,inline函数节省了函数调用时地址切换所用的时间!由于inline函数是直接将函数调用为替换内联代码,所以增加了内存的消耗,(如果有10处存在该函数调用,那么将存在10处内联代码,这样便增加了内存的消耗)。

1,常规的内联函数实现:

           inline int f(int x);

          inline int f(int x){***************}                //将函数声明和定义都添上inline

或者:inline int f(int x){*************}          //直接将含有inline的定义替换掉上面的两行代码

2,类的内联函数:

        class a

     {

         public: 

                int f(int x) {************}             //f(x)自动变为类内联函数

      }

或者:class a

        {

       public:

                   int f(int x);

         }

      inline  int a::f(int x)   {********************}    //这种实现中,内联方法的声明和实现必须在一个文件中,


不可以这样写:class a 

                            {public:         

                                  inline int f(int x);

                           }       //声明在.h文件中

                           inline int f(int x)  {***********}   // 实现在.cpp文件中 

出现这种原因是由于内联函数是内部链接性,在调用函数的文件里必须包含内联函数的定义,即内敛函数的定义必须对编译器是可见的,以便编译器能够在调用点内展开该函数的内联代码,此时,若仅有函数原型是不行的。所以类声明的头文件必须包含内联实现。(或者将内联实现写在另一个头文件中,然后调用函数的文件中包含这两个头文件)




注意:由于内联函数是内部链接性,所以可以把定义放在头文件中,但最好不要把普通的函数定义,或者普通类方法定义放在头文件中,这样容易造成多重定义(比如一个程序的两个文件同时包含该头文件)普通的函数或类方法的链接性是外部的,便违背了单定义原则!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值