您当前的位置: 首页 >  c++

惊鸿一博

暂无认证

  • 3浏览

    0关注

    535博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++语法_深度剖析C++中的inline函数

惊鸿一博 发布时间:2020-11-29 20:36:53 ,浏览量:3

目录

1.inline函数的爱恨两难

2.inline函数卑微在线求助

3.inline函数与虚函数的爱恨纠缠

4.糟糕的内联选择:构造函数与析构函数

5.总结

1.inline函数的爱恨两难

内联函数比宏优点好很多,详细原因请参见尽量以const、enum、inline替换#define  。调用内联函数不需要承受函数调用所导致的额外内存开销,编译器最优化机制通常被设计用来浓缩那些“不含函数调用”的代码,所以当一个函数为内联函数时,或许编译器就因此有内联对其执行语境相关的最优化。

“世界上没有免费的午餐”,内联函数背后的整体思想是:对一个函数的调用都以函数本体替换它,但这同时会增加你的目标码大小。在一个内存有限的机器上,过度使用内联函数会造成程序体积太大。即使用有虚拟内存,内联函数造成的代码膨胀也会导致额外的换页行为,降低指令高速缓存器的命中率。

另一方面来说,如果内联函数的本体很小,编译器针对函数本体所产生的码可能比函数调用所产生的码更小。因此,将函数设置为inline,确实导致更小的目标码和较高的命中率。

 

2.inline函数卑微在线求助

inline只是对编译器的一个申请建议,不是强制命令,编译器可以选择对你的建议置之不理。这项申请可以隐式声明也可以显式声明,隐式声明是将函数定义在类的内部,如下所示:

class Person{
public:
    // ...
    int age() const {return mAge;}   // 隐式的内联函数
private:
    int mAge;
};

显式声明的方法则是在函数定义式前面加上关键字inline,如下面函数模板:

template
inline const T& max(const T& a, const T& b){
    return a             
关注
打赏
1663399408
查看更多评论
0.0374s