繁体   English   中英

C ++中的默认参数

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

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