内联函数--提高C/C++程序执行效率

本文详细阐述了内联函数的原理及其与预处理宏的区别,通过实例展示了如何在C++中使用模板实现通用的内联函数,并探讨了内联函数在类成员中的应用。同时,文章还分析了内联函数的使用限制与注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

内联函数使用的是inline标识函数,是一种利用适度的空间膨胀来换取较高的执行速度,内联函数与预处理宏有相同

的地方,编译器会在调用内联函数的地方将函数展开直接将内联函数代码嵌入调用的地方,这样解决了使用预处理宏函数

的缺陷.
   
    #define max(a,b)  ((a) > (b) ? (a) : (b))      //要是这也做变量要加括号,不然后果很难知道

    如在使用的过程中,int  a = 5,b = 4;
    max(++a,b);  //a自加2次,执行比较一次,输出一次
    max(++a,b+5); // a自加1次,就比较那一次
  
    可以使用函数实现这个预处理宏函数,使用模板可以适用任何类型
    template<class T>
    inline const T& max(const T& a, const T& b)
    {
        return  (a > b ? a : b);
    }

   

   将类的成员定义为内联函数,有两种方式,一种是声明函数在类中,定义在类外时,在定义函数时,在函数前加上

inline标识,另外一种是直接在类中定义,默认为内联函数
    class A
    {
       private:
        int i;
       public:
       A(int i){this.i = i} //默认为内联函数
       void print();
    };

    inline void A::print()
    {
       std::cout<< i << std::endl;
    }


   在使用内联函数时,每次调用内联函数,内联函数都将展开,每次内存中都会存在增加一份内联函数代码内存空间,所

以如果代码数据比较大时不要经常调用内联函数,而且当内联函数代码处理的数据比较多时,编译器一般是把内联函数当

成普通函数编译.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值