C 類模板詳解

2021-10-12 04:19:03 字數 1636 閱讀 4147

一、類模板

1、類模板不可使用自行型別推導,須顯式指定型別

2、類模板可有預設型別引數

#include #include using namespace std;

// agetype = int: 指定agetype預設型別引數為int

template class person

void show()

二、類模板中成員函式的建立時機

1、類模板中的成員函式,並不是一開始建立的,而是在執行階段確定t的資料型別才建立的

三、類模板作為函式引數

#include #include #include using namespace std;

template // 類模板可以有預設的型別引數

class person

void show() const

void test01()

// 2、引數模板化

templatevoid dowork02(const person& p)

// 3、整個類模板化

templatevoid dowork03(const classtype& p)

int main()

int main()

五、類模板的成員函式類外實現

#include #include using namespace std;

template // 類模板可以有預設的型別引數

class person

;template person::person(nametype name, agetype age)

template void person::show()

六、類模板分檔案編寫問題及解決

1、類模板中的成員函式須確定了模板t資料型別後才會生成,因此導致分檔案編寫時連線不到函式的實現,出現無法解析的外部命令錯誤;

2、解決方案:

a、使用時直接包含.cpp檔案(不推薦);

b、同檔案下完成類模板的宣告和實現。

七、類模板中的友元函式

1、友元函式類內實現

#include #include using namespace std;

template class person

2、友元函式類外實現

a、宣告乙個將函式作為其友元的空類模板;

b、宣告和實現友元函式;

c、實現類模板 - 注意:友元的宣告中須加上<>顯式說明該函式為函式模板

#include #include using namespace std;

// 1、宣告乙個空類模板

template class person;

// 2、友元函式的實現 - 為函式模板

template void show(const person& p)

};int main()

C 類模板(模板類)詳解

人們需要編寫多個形式和功能都相似的函式,因此有了函式模板來減少重複勞動 人們也需要編寫多個形式和功能都相似的類,於是 c 引人了類模板的概念,編譯器從類模板可以自動生成多個類,避免了程式設計師的重複勞動。例如,在 c 運算子過載 一章中的 c 實現可變長度的動態陣列 一節中,我們實現了乙個可變長的整...

C 類模板(模板類)詳解

人們需要編寫多個形式和功能都相似的函式,因此有了函式模板來減少重複勞動 人們也需要編寫多個形式和功能都相似的類,於是 c 引人了類模板的概念,編譯器從類模板可以自動生成多個類,避免了程式設計師的重複勞動。例如,在 c 運算子過載 一章中的 c 實現可變長度的動態陣列 一節中,我們實現了乙個可變長的整...

C 類模板與模板類詳解

在c 的template中很多地方都用到了typename與class這兩個關鍵字,有時候這兩者可以替換,那麼這兩個關鍵字是否完全一樣呢?事實上class用於定義類,在模板引入c 後,最初定義模板的方法為 template,這裡class關鍵字表明t是乙個型別,後來為了避免class在這兩個地方的使...