首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 學習筆記(八):模板詳解——函數模板與類模板

     編輯:關於C++

模板:參數化類型的通用編程

模板允許在不指定具體類型的情況下設計函數或類,編譯器根據實參類型實例化生成具體代碼。分為函數模板和類模板。

1. 函數模板

語法

template <typename T1, typename T2, ...>
返回類型 函數名(參數列表) {
    // 函數體
}
  • typename 可替換為 class。
  • 參數列表中至少有一個參數使用模板類型參數。

實例化機制

調用時,編譯器根據實參類型推導模板參數,生成模板函數(實際的函數定義)。函數模板本身不佔用代碼空間,只有實例化後的模板函數才會生成機器碼。

2. 類模板

語法

template <typename T1, int N, typename T2>
class ClassName {
    // 成員定義,可使用 T1, N, T2
};
  • 模板參數分為類型參數(前綴 typename/class)和非類型參數(如整型常量、指針、引用)。
  • 類模板定義不佔用內存,實例化為模板類後才是實際類型。

成員函數類外定義

template <typename T1, int N, typename T2>
返回類型 ClassName<T1, N, T2>::MemberFunc(參數) {
    // 函數體
}

實例化對象

ClassName<int, 10, double> obj;  // 實參順序、類型必須與模板參數匹配

關鍵區別總結

概念定義實體
函數模板模板定義,含通用類型參數模板函數(編譯器生成的具體函數)
類模板模板定義,非實際類模板類(實例化後的具體類)

相關文章


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved