问题
类成员函数添加inline关键字的原因是什么,为什么存在?
为什么存在?
Bjarne在《The Design and Evolution of C++ 》中描述“带类的C”时有相关介绍:
将inline函数引进带类的C,直接原因是一个具体的项目。在该项目中,由于某些类与实时处理有关,这种函数调用的开销是无法接受的;为了使类机制能够成为在这个应用中有用的东西,就要求在跨越保护屏障时不付出任何代价。只有在类声明中提供一种可用表示,并能把对公用(界面)函数的调用变成在线的(inline),才可能达到这个目的。
所以在对类的使用上,inline被认为是非常中重要的机制;
为了满足C++的设计准则之一:
只提供一个特征是不够的,还必须以一种实际上可以负担得起的形式来提供它。在这里,可以负担得起意味着”使用常见硬件的开发者可以负担”,而不是”使用高端设备的研究者可以负担”或者“若干年之后,当硬件变得更便宜之后就可以负担”。
总结一下归到零开销抽象上。
设计与使用
为了提供在线机制,有两种策略:
- 把在线问题留给编译程序去做,因为“编译系统对事情了解的最清楚”。
- 程序中写出要求在线,编译程序有了时间/空间优化的概念时,在进行在线处理。
C++使用了第二中策略,然类的成员函数做成在线的方式有如下两种写法:
<