簡體   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