C 常用特徵 泛型程式設計 類模板

2021-10-08 04:58:55 字數 1066 閱讀 7776

c++強大的泛型程式設計,那什麼是泛型程式設計,即不考慮具體資料型別的程式設計方式,它有兩個關鍵字,template與typename(class)。本文介紹類模板,首先在模板程式設計中,宣告是不會編譯的,cpp檔案才進行編譯,模板類是兩次編譯的,編譯模板的時候不能分檔案編譯,寫模板的時候一般標頭檔案和cpp檔案放在同乙個檔案中(hpp),引用的時候直接引用hpp,可以保證兩次編譯,產生具體的類。

c++中每乙個物件所佔的空間大小,物件的記憶體分布都是在編譯時期就確定下來的。而對於模板類來說,物件佔空間的大小和記憶體分布是不知道的,依所套用的型別而定,比如a為模板類,則a類物件所佔的空間大小和記憶體分布顯然不同於a。(這裡插一句,雖然模板類中有乙個類字,但是對於例項化的模板類才算是真正的類,未例項化的模板類還不能算是類。)因此,對於未例項化的模板類,編譯器無法確定其大小,所以略過對模板類的編譯,在編譯時只檢查一些與模板無關的錯誤。而此時如果模板類的宣告和定義中有錯誤的話,編譯器就檢查不到。

模板類的顯示申明,**如下:

template

class

person

<

int>

;//顯示申明,防止二次編譯問題。

先看乙個簡單的類模板例子,**如下:

template

<

typename t>

class

person

person

(t a)

//運算子過載+

person

operator

+(person

&c)private

: t t1;};

//類成員,函式模板

template

<

typename t>

person

::person()

//測試**

person<

int>p1(

1),p2

(2),

p3(3)

;p1 = p2 + p3;

由於二次編譯問題的存在,最好將類的實現放在類的內部。

C 泛型程式設計 (二)模板類

模板類也是模板,必須以關鍵字template開頭,後接模板形參表。template class 類名 上面提到的模板引數和模板的模板引數在下一節vector迭代器時再分析。一 模板引數 1 模板型別形參 型別形參由關鍵字class或typename後接說明符構成。在函式模板形參表中,二者含義相同。t...

C 泛型程式設計 模板

在學習c c 過程中,我們可能常用幾種函式,由於傳入的引數不同,需要進行不同的函式的編寫,在c語言中需要根據引數和功能的不同重新編寫新的函式,而在c 中有函式過載這樣的機制,一定程度上解決了問題,但是 過載的函式僅僅只是型別不同,的復用率比較低,只要有新型別出現時,就需要增加對應的函式 的可維護性比...

C 泛型程式設計(模板)

2.類模板 我們先來看乙個概念 泛型程式設計 使用模板,編寫和型別無關的 沒有模板之前,一些函式或者類,針對不同的型別需要寫很多重複的 函式 比如交換函式swap,假如傳入的資料型別不同,int,char,double。我們要實現不同的型別物件函式。類 比如我們像實現乙個資料結構棧stack,sta...