C++基础——内联(inline)函数

  • 对于C函数的扩展
    内联函数是C++为提高程序运行速度所做的一项改进.常规函数和内联函数的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中.
  • 常规函数
    程序运行时,操作系统将机器语言指令载入到内存中,因此每条指令都有特定的内存地址.计算机逐步执行这些指令.
    在执行常规函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码(也许还需将返回值放入到寄存器中),然后回到地址被保存的指定处,来回跳跃并记录跳跃位置意味着使用函数时,需要一定的开销
  • 内联函数
    内联函数的编译代码与其它程序代码"内联"起来,编译器将使用相应的函数代码代替函数调用,程序无需来回跳跃执行,运行速度比常规函数稍快,但是占用更多内存.
    图见C++ Primer Plus(第6版) 内联函数
    图见C++ Primer Plus(第6版) 内联函数
#include <iostream>
using namespace std;

#define MAX_MACRO(x,y)  ((x) > (y) ? (x) : (y))

inline int max_inline(int a, int b)
{
	return a > b ? a : b;
}

int main()
{
	cout << max_inline(1, 2) << endl;
	cout << MAX_MACRO(1, 2) << endl;
	return 0;
}

内联函数由编译器处理,与常规函数一样按值传递参数,而宏定义由预处理器处理只是进行简单的文本替换,如果使用C语言的宏执行了类似函数的功能,应该考虑将它们转换为C++内联函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值