2015-02-06 84 views
0
A(int a,int c,int d=1); 

A(int a ,int b,int d){ 
    .... 
} 

main(){ 
    A(1,2); 
} 

在上面的C++代碼函數A()中被調用eventhough參數的數字是不一樣的。 可能是什麼原因函數被調用,即使它具有變量no參數?

+1

請創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們顯示。另外,它是C還是C++?這兩種語言的行爲有所不同。 – 2015-02-06 09:27:33

+0

也許某處有重載? – LPs 2015-02-06 09:28:18

+0

無法重現:http://ideone.com/xu8dtr。 – Jack 2015-02-06 09:29:22

回答

2

結果取決於您使用的是哪個版本的C. C89以前的編譯器可能編譯代碼,但c89編譯器或更高版本會將參數不匹配視爲錯誤。

請注意,即使代碼應該編譯,A中任何對fun的引用都會導致未定義的行爲。

C中的函數只能通過它們的名稱來標識,所以參數列表與標識函數無關。因此,在C中不能重載。在C程序中只能有一個名爲A的函數。

相關問題