[英]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.