初始化参数时会发生什么?C++

csg*_*guy 2 c++ parameters

void foo (int i , int k = 7) {
    cout << k;
}

int main(){
    foo(1, 2);    
}
Run Code Online (Sandbox Code Playgroud)

k将输出2.我的问题是,foo以什么顺序初始化参数并获取参数?什么是foo经历的过程2.谢谢

A.S*_*S.H 6

 void foo (int i , int k = 7);
Run Code Online (Sandbox Code Playgroud)

这个原型意味着如果你只用第一个参数调用foo,那么第二个被隐式设置为7.

    foo(1, 2);  // i=1, k=2
    foo(5);  // <==> foo(5, 7)   i=1, k=7
Run Code Online (Sandbox Code Playgroud)

编译时在编译时解析此机制.每当缺少param k调用foo时,编译器会自动将其插入值7(即foo(5)).如果没有丢失,则采用实际参数(即foo(1, 2)).