函式過載和函式模板的區別

2021-07-23 14:22:16 字數 563 閱讀 6450

函式過載

通常在c語言程式設計中,如果我們比較三個整數的大小,我們可以進行編寫乙個max()函式,而如果我們要繼續比較三個浮點數的大小,就需要重新編寫乙個函式,函式體基本是完全相同的,就是返回值和引數型別是不同的,但是函式名稱不能是乙個了,所以要寫第二個函式max1()。

在c++中就可以避免這個問題,允許用同乙個函式名定義多個函式,但是一定要注意一點,過載函式的引數個數、引數型別、引數順序、這三者中至少要有乙個不同,才能進行函式過載,因為呼叫過載函式就是要根據這個來區分具體的呼叫哪個函式,而函式的返回值可以相同可以不同。

函式模板

函式過載雖然是方便了,但是你還是要定義多個函式,優點就是名字可以相同了,原來的c語言中是不允許兩個比較大小函式名字相同的。而函式模板的好處更近一步了,就是你只是需要定義乙個函式就可以了。函式模板的通用形式如下所示:

template

通用函式定義 或

template

通用函式定義

但是用函式模板只能用於 函式的引數個數相同而型別不同的情況,如果引數個數不同,則不能使用函式模板。

函式過載和函式模板

要求 1 函式名相同 2 引數不同 型別,個數或順序 但注意 認為這些型別相同 int a和int a 呼叫時都寫成f a int a和int a 呼叫函式時輸入的東西相同 不能以形參名,返回值作為區分。include using namespace std void out int a void ...

C 函式過載和函式模板

過載 不同的東西在不同場合有不同的含義,一物多用 例如 和 可以是移位運算子,在c 也是輸入輸出運算子 cout 和cin 函式過載 同名函式實現不同功能。函式過載實現方式 引數型別和引數個數至少乙個不同即可。優點 函式過載將相同或類似功能的函式用乙個函式名,但仍然要定義每個函式,於是函式模板派上用...

函式過載和函式模板的對比

1 和過載相比 模板函式的優勢在於,它不需要重複定義,所以函式模板比函式過載更簡潔。但是,函式模板只適用於函式的引數個數相同而型別不同,而且函式體相同的情況。如果引數的個數不同,則不能用函式模板,這就是函式模板相對於函式過載的缺陷。2 當呼叫環境同時滿足模板函式的條件和過載的條件,則先呼叫過載函式 ...