目录
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?