C++基础-形参带默认值的函数

//定义处可以给形参默认值,声明也可以给形参默认值
//不管何处给,形参默认值只能出现一次
//int sum(int a = 10, int b = 20);

//形参带默认值的参数,只能从右向左给
//实际压栈也是从右向左
int sum(int a=10, int b=20)
{
	return a+b;
}

int main(void)
{
	int a = 10;
	int b = 20;
	int ret = sum(a,b);
	/*
		mov eax, dword ptr[ebp-8]
		push eax
		mov ecx, dword ptr[ebp-4]
		push ecx
		call sum
	*/
	cout<<"ret: "<<ret<<endl;

	ret = sum(a);
	/*
		push 14H
		mov ecx, dword ptr[ebp-4]
		push ecx
		call sum
	*/
	
	ret = sum(); //等同 sum(10,20);
	/*
		push 14H
		push 0Ah
		call sum
	*/
}

总结:

  1. 形参带默认值的参数,只能从右向左
  2. 直接传立即数比传变量效率更好,少了mov指令
  3. 定义处可以给形参默认值,声明也可以给形参默认值
  4. 不管何处给,形参默认值只能出现一次
posted @ 2022-07-13 11:29  言叶以上  阅读(107)  评论(0编辑  收藏  举报