#include <iostream>
using namespace std;
int sum(int a = 10, int b = 20)
{
int temp = 0;
temp = a + b;
return temp;
}
int main()
{
int a = 10;
int b = 20;
int ret = sum(a, b);
/*
mov eax, dword ptr[ebp -8]
push eax
mov edx, dword ptr[ebp -4]
push edx
*/
ret = sum(10);
/*
push 20;
mov edx, dword ptr[ebp - 4]
push edx
*/
ret = sum();
/*
push 20
push 10
*/
cout << ret << endl;
return 0;
}
1.给默认值的时候,从右到左
2.调用效率的问题
变量传参,会先把变量赋值给寄存器。如果是立即数sum(10,20) 和默认参数 它就会直接存在与寄存器中,相对于变量就会少一行汇编指令
3.定义处可以给行参默认值,声明处也可以给行参默认值
4.行参给默认值的时候,不管是定义处给,还是声明处给,行参默认值只能出现一次