一、類模板
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在這兩個地方的使...