C 學習之模板

2021-07-05 01:30:51 字數 1423 閱讀 2396

有關c++模板的概念,詳細學過c++的人都應該有所耳聞,其是泛型程式設計的基礎。顧名思義,模板就是相當於乙個模子,通過這個模子我們可以做出各種各樣的東西,c++模板就是這樣的一種工具。之所以要在c++中引入模板,就是為了減少c++程式中**的重複工作,達到**的可重用的功能。舉乙個我們常用的例子,比較兩個整型a,b的大小,我們定義乙個函式,但是如果比較的是兩個浮點型的內,或者還有乙個字元型的內?那麼我們不是得寫三個函式?這樣就寫了很多重複性的**,那麼我們可不可以把這三個函式或者更多類似的函式寫成乙個內?答案是肯定的,這就可以用到我們的模板了。c++常用的模板方式有函式模板和類模板,下面我們就分別介紹。

函式模版在函式定義的時候,我們可以不指定引數變數的具體資料型別,而是在函式呼叫時,編譯器根據傳入的引數自動確定資料型別。函式模板可以實現對資料型別的傳遞和檢查。下面是定義乙個函式模板的例項:

template  t function(t data)

/***以指標作為模板的非型別引數 ***/

templatevoid point_fun(intdata)

/***以引用作為模板的非型別引數 ***/

templatevoid des_fun()

/***以函式指標作為模板的非型別引數 ***/

templatevoid fun_fun()

void test()

char a[20]="c++,template";

char b = 'f';

int main()

有關函式模板,我們還是要搞清楚其格式,其用法其實一般來說比較簡單,關鍵是細節格式需要我們注意,初學階段都是模仿,後面自然就熟能生巧了。

類模板跟函式模板的定義和使用類似,其也是為了減少**中的重複部分,增加**的可重用性,其引數可以是型別引數,也可以是非型別引數,但是與函式模版不同的是,編譯器不能為類模板推斷出引數的型別,因此我們必須顯示的提供模板的實參。有關類模板的使用,我們依然需要注意其格式規範。下面我們就結合**來介紹。

#include #include using namespace std;

templateclass test

;/********在類外實現成員函式*********/

templatetest::test(t a, t b)

templatet test::max()

templateint test::temp= 100;

int main()

在這段程式中,我們定義了乙個模板類test,有兩個成員函式,兩個資料成員和乙個靜態成員,成員函式和靜態變數在類外進行實現,這裡需要注意,在類外實現的時候,每乙個實現前都要加上模板的宣告,並且在寫類名時也要加上模板,而在類裡面時則不需要加了。最後在主函式中,我們例項化了三個模板類物件,在例項化類物件的時候,我們必須顯示的指定型別引數,如此才能正確編譯。

C 之模板 模板的學習 學習模板

c 之模板 模板學習 學習模板 模板就是建立通用的模具,大大提高復用性 函式模板 c 提供兩種模板機制函式模板和類模板 函式模板語法 函式模板作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表 語法 template typename t 函式宣告或定義解釋 t...

C 學習之模板

之前寫過有關c 模板的內容,但是現在回頭再看看書本,發現之前寫的東西太膚淺了。考慮的問題太不全面了。因此在這裡重寫下有關c 模板的知識總結。為什麼c 要引入模板這個概念呢?c 的發明者bjarne stroustrup曾這樣說過 這是為了支援型別安全 類容器的有效性和演算法的通用性。簡單的來說,模板...

C 學習筆記之 模板

目錄類模板 模板是泛型程式設計的基礎,泛型程式設計即以一種獨立於任何特定型別的方式編寫 即不具體制定資料型別 模板是建立泛型類或函式的藍圖或公式 include include using namespace std 函式模板實現通用資料型別交換 template t屬於通用資料型別 void my...