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

本文探讨了C++中类成员函数使用inline关键字的原因,源于减少函数调用开销以适应实时处理项目的需求。Bjarne在《The Design and Evolution of C++》中强调了inline对于实现零开销抽象的重要性。C++采用提示性的inline策略,允许编译器根据情况决定是否内联。尽管inline是建议而非强制,但递归inline函数可能导致编译问题。
摘要由CSDN通过智能技术生成

问题

类成员函数添加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、付费专栏及课程。

余额充值