C++内联函数

什么是内联函数

内联函数是c++为提高程序运行速度所做的一项改进。常规函数与内联函数之间的主要区别在于c++编译器如何将他们组合到程序中。
编译过程的最终产品是可执行程序,由一条条机器语言指令组成,每条指令都对应一个内存地址。当执行一些语句

for (条件) {
 if (判断){
 	statement;
 else {
  	statement;
  }

如上述的循环或分支语句,有时会跳过一些指令跳转到特定地址。常规函数的调用也就是使函数跳到宁一个地址并在结束时返回。这样的来回跳跃意味着一定的开销。
而内联函数就是使用相应的函数代码替换函数调用,这也就意味着无需反复的来回跳跃,但代价是内存开销更大。如果程序在10个不同的地方调用内联函数,意味着有10份相应的函数代码。

如何使用这种特性

必须采用以下两种措施之一

在函数声明前加上关键字inline

在函数定义前加上关键字inline

但是如果你加上关键字inline这个函数也不一定就是内联函数。如果这个函数过于复杂或者是递归的情况,编译器就不会认为其是内联函数

内联与宏

如果使用宏执行了类似函数的功能,应该考虑转化为内联函数

#define SQUARE(X) X*X

这是一个计算平方的宏,但这并不是通过传递参数实现,而是通过文本替换实现

auto a = SQUARE(5.0);
auto b = SQUARE(4.0 + 7.5);
std::cout<<a<<std::endl<<b<<std::endl;
结果为:
25
41.5

a的结果为想要的,但是b就有些奇怪了,这里看下b的运行方式 b = 4 + 7.5 * 4 + 7.5;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值