小古銀的官方網站(完整教程):http://www.xiaoguyin.com/
C++入門教程視頻:https://www.bilibili.com/vide...ios
在前面代碼中,int myabs(int num);
,能夠看到參數是int
,返回值也是int
,那麼,當傳入浮點型或者長整型時,就會像上面說的參數賦值的步驟進行。換句話說,若是傳入其餘int
保存不了的參數時,那麼它就不舉了。這種狀況就須要新的函數用來處理其它類型,因爲其它新函數也是用來求絕對值的,因此也用myabs
做爲函數名稱,就是爲了讓函數名稱更清晰方便地表達出它的意思,而參數改爲各類的類型。ide
上面所說的,若是一堆函數是同一個名字但有不一樣的形式參數,那麼這堆函數就是重載函數。函數
注意:重載函數只跟函數形式參數的數量還有數據類型有關,跟參數名沒有關係,跟返回值也沒有關係。網站
如下給出完整栗子:code
#include <iostream> int myabs(int num); float myabs(float num); double myabs(double num); long long myabs(long long num); int main(void) { std::cout << myabs(-1024) << std::endl; std::cout << myabs(10.24) << std::endl; std::cout << myabs(-2.1456) << std::endl; return 0; } int myabs(int num) { if (num < 0) { return -num; } else { return num; } } float myabs(float num) { if (num < 0) { return -num; } else { return num; } } double myabs(double num) { if (num < 0) { return -num; } else { return num; } } long long myabs(long long num) { if (num < 0) { return -num; } else { return num; } }
輸出結果:視頻
1024 10.24 2.1456
上面寫的也只是一部分,若是想要全部類型都適用,就要都寫一遍,ヽ(✿゚▽゚)ノ驚不驚喜,意不意外。不過仍是有方法不用寫這麼多的,就是這個教程很後面教的——模板。教程
當你編譯的時候,編譯器會分析出你給函數提供了什麼類型的參數,而後根據這個數據類型去找符合這個類型的函數,而後就用這個函數調用你指定的參數。若是編譯器找不到對應的函數,就嘗試找最接近的類型,而後(隱式)轉換一下參數變成這個接近的類型,若是也都沒有就會編譯報錯。get
舒適提示:通常IDE仍是很是智能的,當你用鼠標指着你調用的函數時,IDE會顯示出來調用的是哪一個函數。編譯器