59 類模板深度剖析

2021-08-19 21:13:35 字數 1491 閱讀 6361

類模板可以定義任意多個不同的型別引數

template

class test

public:

void add(t1 a,t2 b);

使用==> testt;

類模板可以被特化:指定類模板的特定實現,部分型別引數必須顯示指定,根據型別引數分開實現類模板。

template

class test  

特化(部分):

template

class test

類模板的特化型別:部分特化:用特定規則約束型別引數。完全特化:完全顯示指定型別引數。

template

class test

完全特化:

template<>   //不要泛指引數

class test

試驗:#include

#include

using namespace std;

template

< typename t1, typename t2 >

class test

};//以下為特化

template                                

< typename t1, typename t2 >

class test < t1*, t2* >      // 關於指標的特化實現

};template

< typename t >        //部分特化

class test < t, t >    // 當 test 類模板的兩個型別引數完全相同時,使用這個實現

void print()

};template                    //完全特化

<  >

class test < void*, void* >    // 當 t1 == void* 並且 t2 == void* 時

};int main()

};/*

template

<  >

class test < void*, void* >    // 當 t1 == void* 並且 t2 == void* 時

};*/

//取消上邊的特化,下邊為重定義

class test_void

};template

< typename t >

bool equal(t a, t b)

template  //完全特化

< >

bool equal(double a, double b)

bool equal(double a, double b)   //過載

int main()

當需要過載函式模板時,優先考慮使用模板特化;當模板特化無法滿足要求,再使用函式過載。

類模板可以定義任意多個不同的型別引數,類模板可以被部分特化和完全特化,特化的本質是模板的分開實現,函式模板只支援完全特化,工程中使用模板特化代替類(函式)重定義。

類模板深度剖析

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

類模板深度剖析

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

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

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