C Template初探 以模板為引數的模板

2021-06-27 00:45:09 字數 631 閱讀 2698

以模板為引數的模板,顧名思義,就是定義了乙個新的模板,這個模板的引數不是類,而是另乙個模板,用例子說明就很簡單了:

templateclass a 

};

這裡首先定義了乙個類模板 a,該模板有乙個整數引數,該引數又有乙個預設值 10。 a是乙個普通的模板,其用法很簡單,像 a<>  a 或 a<100>  a,這樣就得到了乙個a的例項化類物件。同樣,我們定義了乙個與a很相似的模板b(b的用途會在稍後說明),接著我們定義了乙個新的類模板 c,該模板有兩個引數,第乙個引數是乙個整數,第二引數是乙個模板,這就是所謂的以模板為引數的模板,因為它的引數中出現了模板,而不僅僅是整數或型別,可以看到,我們可以在c中像使用普通模板一樣使用u,在這裡我們給了u乙個預設引數:a。下面我們看一下c可以怎麼用:

c<100> c1;

c1.print();

c<200,b> c2;

c2.print();

因為c中提供了預設引數,所以在例項化c的時候可以不提供該引數而使用預設引數,像 c<100>  c1; 當然,我們也可以提供乙個模板作為引數,像 c<200, b>  c2;  輸出結果如下:

a size = 100

b size = 200

C template(模板)的使用

在c 中,針對於 泛型 的程式設計時,需要使用模板,泛型 任何資料型別。比如 做乙個同時支援int和double型的加法運算,並輸出。傳統的做法 include using namespace std int add int a,int b double add double a,double b ...

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok 若兩個引...

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...