c++类成员函数的inline属性

问题

类成员函数添加inline关键字的原因是什么,为什么存在?

为什么存在?

Bjarne在《The Design and Evolution of C++ 》中描述“带类的C”时有相关介绍:

将inline函数引进带类的C,直接原因是一个具体的项目。在该项目中,由于某些类与实时处理有关,这种函数调用的开销是无法接受的;为了使类机制能够成为在这个应用中有用的东西,就要求在跨越保护屏障时不付出任何代价。只有在类声明中提供一种可用表示,并能把对公用(界面)函数的调用变成在线的(inline),才可能达到这个目的。

所以在对类的使用上,inline被认为是非常中重要的机制;
为了满足C++的设计准则之一:

只提供一个特征是不够的,还必须以一种实际上可以负担得起的形式来提供它。在这里,可以负担得起意味着”使用常见硬件的开发者可以负担”,而不是”使用高端设备的研究者可以负担”或者“若干年之后,当硬件变得更便宜之后就可以负担”。
总结一下归到零开销抽象上。

设计与使用

为了提供在线机制,有两种策略:

  1. 把在线问题留给编译程序去做,因为“编译系统对事情了解的最清楚”。
  2. 程序中写出要求在线,编译程序有了时间/空间优化的概念时,在进行在线处理。

C++使用了第二中策略,然类的成员函数做成在线的方式有如下两种写法:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值