3.2 c++的内联函数

内联函数是c++为提高程序运行速度所作出的一项改进。常规函数调用会使程序跳到另一个地址,并在函数结束时返回。这种跳跃和还要记录跳跃位置需要一定的开销。内联函数会使编译器将其替换函数调用,程序无需跳到另一个位置执行代码和再跳回来,因此内联函数的运行速度比常规函数稍快,但代价需要占用更多内存,且调用多少次内联函数,就产生多少个副本如果函数代码执行短,且经常被调用,则可以考虑使用内联函数。

内联函数要在函数声明或定义前加上关键字inline,通常做法是把函数原型换成内联函数,如下代码。

// #define square(x) ((x)*(x))    // 宏定义
inline double square(double x)
{
	return x*x; 
 } 

int main()
{
	using namespace std;
	double a,b,c;
	double pa = 2;
	a = square(3);
	b = square(3.1 + 1.9);
	c = square(pa++); 
	cout << a << endl << b << endl <<c << endl << pa;
	return 0;
 }
// 输出结果
9
25
4
3

inline工具是c++新增的特性,C语言使用预处理器语句#define来提供宏。宏定义并不是通过传递参数实现的,而是通过文本替换实现的。即便用小括号改进的宏,由于pa被递增两次,变量c仍然不是期望的结果,这里宏就会与内联函数产生差异。如果C语言的宏执行类似函数的功能,在c++中应考虑将他们转换为内联函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vinkuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值