2012-02-22 49 views
-3

我有一個疑問..這是我的測驗中的問題。想知道這個問題的答案。將選擇哪個功能?

Question: 

int foo(int); 
double foo(int); 
double foo(double); 

void bar(int value){ 
double score = foo(value); 
} 

哪個函數聲明將被選中?或者它不是以上的?

+3

無,它不會編譯。 – jv42 2012-02-22 09:16:48

回答

6

C不支持重載(具有相同名稱的函數)。

如果這實際上是一個C++問題,那麼C++不允許只有返回類型不同的重載(int foo(int)double foo(int))。

+2

+1答案將是'以上都不會編譯'。 – jv42 2012-02-22 09:16:33

1

C不支持重載。你不能有多個同名的函數。

你的代碼不會編譯,因此它的行爲方式的問題是未定義的。

這就是爲什麼,例如,數學庫同時提供sin()double作品,並使用單精度float值而不是sinf()

2

這是不可能的,如果任何人能夠實現它,那麼這將是計算機科學的最大突破。