C 深度解析 48 類模板深度剖析

2021-09-25 13:16:52 字數 1496 閱讀 5581

1.多引數類模板

2.程式設計實驗

#include using namespace std;

// 定義類模板

template // 兩個不同引數。

class test

};// 下面類模板的特化,即引數型別為指標時的特殊情況

// 如何處理,下面是這種情況的類實現。(因引數仍是泛型,故稱為部分特化)

template class test // 特化時,必須在這裡顯示指定引數的型別(本例為指標),這個實現是上訴類模板的特殊情況,本質是同乙個類模板

};// 類模板特化為兩個引數相同的情況(因引數仍是泛型,故稱為部分特化)

template class test // 特化時, 必須顯示指定引數的型別

//特化的類,可以有自己的成員函式

void print() };

// 完全特化,當兩個引數具體的型別(如int,void*),而不是泛型型別時

template <> // 這裡為空,因為沒有泛型了,只有實際型別

class test // 特化時,這裡須顯示指定引數型別(這裡特化為void*)

};// 重定義(雖然可以完成與完全特化的類模板一樣的功能,但本質上這是乙個新的類)

class test_void

};int main()

3.特化的深度分析特化4.函式模板的特化

#include using namespace std;

// 函式模板

template bool equal(t a, t b)

// 函式模板的特化(必須完全特化)

// 函式功能:判斷兩個數是否相等。

template <> //因完全特化,這裡沒有泛型,引數列表為空

bool equal(double a, double b) //函式名後面必須指定引數的型別(如double)

// 函式過載

bool equal(double a, double b)

int main()

5.工程中的建議6.小結

C 深度剖析教程38 類模板深度剖析

類模板可以定義任意多個不同的型別引數 類模板可以被特化 類模板的特化型別 看 include include using namespace std template typename t1,typename t2 class test template typename t1,typename t...

類模板深度剖析

多引數類模板 類模板可以定義任意多個不同的型別引數 template class test 使用上述的類模板 testt 類模板可以被特化 即特殊化 指定類模板的特定實現 部分型別引數必須顯示指定 根據型別引數分開實現類模板 template class test 上面的類模板可以被特化為 temp...

類模板深度剖析

類模板可以定義任意多個不同的型別引數 類模板可以被特化 指定類模板的特定實現 部分型別引數必須顯示指定 根據型別引數分開實現類模板 類模板的特化型別 部分特化 用特定規則約束型別引數 完全特化 完全顯示指定型別引數 類模板特化注意事項 特化只是模板的分開實現 本質上是同乙個類模板 特化類模板的使用方...