c++-inline 内联函数

内联函数用于优化频繁调用且代码简单的函数,以减少函数调用带来的开销。C++中的inline只是一个建议,实际是否内联由编译器决定。内联函数与宏定义不同,前者在编译时展开,后者在预处理阶段替换,并且内联函数要求参数类型一致。类中的成员函数默认为inline,类外定义需再次加inline。错误使用内联可能导致找不到函数定义,解决方案包括在类声明中定义或在调用文件中定义内联函数。
摘要由CSDN通过智能技术生成

为什么要使用内联函数:

当程序调用函数时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。在有些情况下,函数本身很小很简单,但是使用频率很高,程序频繁的调用这些函数,就会是cpu的大多数开销花费在建立栈空间,保护现场,程序转移等工作上

inline 只是一个标记,要不要把函数转换为内联函数还要编译器说了算,一般在函数中存在switch,for等循环语句,即便声明了inline编译器也不会转换为内联函数。

改进:

为了提高程序的效率,一般要把代码嵌入到主函数中,但是又会出现很多重用的代码,可读性也会减差

解决:

c++提供了内敛函数

inline函数与宏定义的区别:

(1)内敛函数被调用时,要求实参和形参的类型一致,另外内联函数会先对实参表达式求值然后传递给形参,宏调用只是对实参简单的替换

(2)内联函数在编译的时候进行展开,宏定义是在预处理阶段替换

不要随便使用内联函数,因为内联函数会是函数体增长,一般讲函数本身很简单,代码短,使用频率高的函数定义为inline函数


类中的成员函数,类内声明默认为inline函数,不必要加inline修饰,在类外定义时必须加inline修饰才是内敛函数

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值