C++函數重載易錯點

1.函數重載跟返回類類型無關。

如果定義一下兩個函數:

int Func();

void Func();

如果int a = Func();那麼編譯器知道調用第一個函數。

但是C++允許直接使用函數而不需要返回值。  

Func();這個時候就不知道調用哪個函數,編譯報錯。



2.二義性。 特別是double類型的隱式轉換的二義性。

int max(int a, int b);

int max(int a, float b);

如果這時候調用函數  max(1, 0.4);

函數默認0.4爲double型,此時不知道應該向int還是像float轉換,所以造成二義性。

如果又定義了一個函數  int max(int a, double b); 那麼max(1,0.4)會調用它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章