C 高階之函式模板

2021-06-06 00:13:34 字數 890 閱讀 1216

我們知道c++中有函式過載這個概念,函式過載的功能就是把乙個函式重寫多次使其可以具有多種型別的引數。簡單的來說就是用同一種函式名定義多個函式,這些函式的引數個數和引數型別不同。

利用函式模版就可以更簡單的來實現不同函式的引數需求。其實函式模版和函式過載是非常相似的 唯一的區別就是 函式過載需要寫多個函式,而函式模版只需要寫乙個函式模版(特殊的函式)就可以在呼叫的時候匹配隨意型別的引數了!

舉個例子:

我們需要寫乙個求最大值函式(max()):

max(int a,int b,int x)else

return x;

}這樣我們就可以計算出 整型的(int)最大值了,但是又出現了另外的乙個問題就是 如果是這樣宣告函式的話 我們就必須宣告多種型別的函式,也就是說這一種 int 型別的函式只適用於int型的資料才能起作用。如果是double long 等型別就不適用了。如下:

max(dobule a,ouble b,double x)else

return x;

}當然我們可以定義多個函式來實現,但是這樣就會有太多的冗餘**。所以我們就必須運用到函式模版來解決這個問題:

#include "stdafx.h"

#include

#include

using namespace std;

template

t max(t a,t b,t c)else

return c;

}int main()

這樣一來就可以解決同樣功能的函式處理不同型別的引數了!

大家將此例子敲完就可以理解 函式模版的意思了!我就不過多的解釋了。

總結一句話:「函式摸吧 就是使同意功能的函式適應不同 引數型別」

C 模板之函式模板

c 中分為函式模板和類模板,它們之間的相同點是都含有模板型參表,不同點在模板例項化的時候函式模板可以不用顯示的宣告模板類項,編譯器會自動幫我們匹配,而類模板則需要顯示定義出來,例如 template compare type type compare a,b template class queue...

C 模板之函式模板

泛型程式設計 編寫與型別無關的邏輯 是 復用的一種手段。模板是泛型程式設計的基礎 模板代表乙個函式家族,該函式與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本 它本身不是類或函式 模板函式的格式 模板的例項化 產生模板特定型別的過程稱為函式模板的例項化 template t add ...

c 之模板函式 模板

模板就是建立通用的模具,大大提高復用性。c 的另一種程式設計思想是泛型程式設計,主要利用的就是模板。c 提供兩種模板機制 函式模板和類模板。宣告 template typename可以替換成class 函式模板 函式模板的作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的...