c++带默认值参数的函数

带默认值参数的函数即在函数定义或声明时,我们可以赋予函数参数默认值。所谓默认值就是在调用时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。如果在函数的声明和定义中同时设置同一个参数的默认值时,则要求默认值设置是相同。

int sum(int a = 10, int b = 20);
int sum(int a, int b)
{
	return a + b;
}
int main()
{
	sum(10,10);
	//      00FE142E  push        0Ah
	//	00FE1430  push        0Ah
	//	00FE1432  call        sum(0FE105Fh)
	//	00FE1437  add         esp, 8
//
	sum();
	//      00FE143A  push        14h
	//	00FE143C  push        0Ah
	//	00FE143E  call        sum(0FE105Fh)
	//	00FE1443  add         esp, 8
/	
	int a = 10;
	int b = 10;
	sum(a, b);
	//00FE1446  mov         dword ptr[a], 0Ah
	//00FE144D  mov         dword ptr[b], 0Ah
	//00FE1454  mov         eax, dword ptr[b]
	//00FE1457  push        eax
	//00FE1458  mov         ecx, dword ptr[a]
	//00FE145B  push        ecx
	//00FE145C  call        sum(0FE105Fh)
	//00FE1461  add         esp, 8
}

当调用一个带默认值参数的函数时,如果没有给相应的实参,那么编译器就会自动把默认值传递给函数,如果有实参,则使用调用函数传递的实参值。

但是,不管使用还是不使用默认参数,从函数调用的汇编指令上来看,相应的参数都会有压栈操作,因此带默认值参数的函数不会影响汇编上CPU的push指令。


但在某些情况还有有一定的区别的,这种区别体现在:

当传给函数的实参为变量时,此时从汇编上来看,需要先从内存中取变量的值,增加了mov指令,相对的效率就会降低。而当使用立即数作为实参传给函数时,这种情况与使用默认值参数的函数所产生汇编指令是相同的,所以效率也是相同的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值