程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++函數模板基本概念講述

C++函數模板基本概念講述

編輯:C++入門知識

C++編程語言中的模板應用對於程序開發是一個非常重要應用。其中,C++函數模板能以同樣的程序代碼對不同類型的數據進行處理,其關鍵是將所處理的數據類型說明為參數,即類型參數化。

定義函數模板的一般形式是:

  1. template <class 類型參數名1 ,class 類型參數名 2,…> 
  2. 函數返回值類型 函數名(形參表)  
  3. {  
  4. 函數體  

說明:

(1)這裡的類型參數名就是代表形形色色數據類型的通用參數名,它可以代表基本數據類型,也可以代表類。

(2)編寫C++函數模板的方法是:

step 1:定義一個普通的函數,數據類型采用具體的普通的數據類型,仍以打印數組為例,先定義一個打印整型數組的普通函數:

  1. void printArray(int *array,int count)  
  2. {  
  3. for (int i=0;i<count;i++)  
  4. cout<<array[i]<<" ";  
  5. cout <<endl;  

step 2:將數據類型參數化:將其中具體的數據類型名(如 int )全部替換成由自己定義的抽象的類型參數名(如T)。

step 3:在函數頭前用關鍵字template引出對類型參數名的聲明。這樣就把一個具體的函數改造成一個通用的函數模板:

  1. template <class T>void printArray(T *array,int count)  
  2. {  
  3. for (int i=0;i<count;i++)  
  4. cout<<array[i]<<" ";  

  • C++ TinyXml應用方式解讀
  • C++單例模式基礎內容詳解
  • C++創建Web服務相關方法剖析
  • C++構造函數如何進行初始化
  • C++標識符命名規則相關應用技巧分享
(3)C++函數模板不是一個可以執行的函數,它只是對函數功能的程序描述,編譯程序不為它生成執行代碼。

(4)當編譯程序遇到函數調用:

函數名 (實參表)時,自動將實參表中具體的數據類型替換函數模板中的類型參數,生成一個隱含的重載函數,該重載函數的程序代碼與函數模板相同,類型則采用實參表中的具體數據類型。仍以前面所創建的打印數組C++函數模板為例,當程序出現函數調用語句printArray(a,aCount);時,編譯程序將根據第一個實參a的數據類型int 匹配類型參數T,將函數模板中的所有T都替換成具體的數據類型int,從而產生一個具體的可執行函數的定義(這個過程稱為模板實例化):

  1. void printArray(int *array,int count); 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved