繁体   English   中英

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

[英]What happens when you initialize a parameter? C++

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

int main(){
    foo(1, 2);    
}

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

 void foo (int i , int k = 7);

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

    foo(1, 2);  // i=1, k=2
    foo(5);  // <==> foo(5, 7)   i=1, k=7

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

您的示例与没有使用默认参数声明foo的情况没有什么不同。

默认参数由编译器处理。 当编译器遇到只有一个参数的foo调用时,它会为你添加第二个参数。

例如:

foo(3);

将被编译器转换为

foo(3, 7);

就这样。

这称为函数初始化器。

如果不将第二个参数指定为foo(1,2),它将在屏幕上输出“7”(当您使用foo(1)时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM