[英]default parameters in c++
考虑以下:
int foo(int x , int z = 0);
int foo(int x, int y , int z = 0);
如果我这样调用此函数:
foo( 1 , 2);
编译器如何知道要使用哪一个?
它不会,因此此示例将无法干净地编译,它将为您提供编译错误。
它会给您一个模棱两可的函数调用错误。
int foo(int x , int z = 0){return 0;}
int foo(int x, int y , int z = 0){return 10;}
int main()
{
foo( 1 , 2);
return 0;
}
输出:
prog.cpp:在函数'int main()'中:
prog.cpp:6:错误:重载的“ foo(int,int)”的调用不明确
prog.cpp:1:注意:候选对象是:int foo(int,int)
prog.cpp:2:注意:int foo(int,int,int)
并非如此,这就是为什么会出现编译器错误。
这是一个很好的问题。 但是由于对foo()
调用不明确,因此无法编译。 您可以通过在函数签名中使用不同的数据类型来消除这种歧义。
有关默认参数和函数重载的更多详细信息,请参见http://www.smart2help.com/e-books/ticpp-2nd-ed-vol-one/Chapter07.html
编译器将报告歧义函数重载。 由于您无法确定将调用哪个函数,因此编译器也将
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.