程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第16章 模板與泛型編程(4)

第16章 模板與泛型編程(4)

編輯:C++入門知識

16.1.5 非類型模板形參

在調用函數時,非類型形參將用值代替,值的類型在模板形參表中指定。

template<class T, size_t N> 
void array_init(T (¶m)[N]) 

    for(size_t i=0;i!=N;++i) 
    { 
        cout<<param[i]<<endl; 
    } 

template<class T, size_t N>
void array_init(T (¶m)[N])
{
 for(size_t i=0;i!=N;++i)
 {
  cout<<param[i]<<endl;
 }
}int i[]={1,2,3,4}; 
array_init(i); 
 int i[]={1,2,3,4};
 array_init(i);模板非類型形參是模板定義內部的常量值,在需要常量表達式的時候,可使用非類型形參(就像這裡所做的一樣)指定數組的長度。

類型等價性與非類型形參

對模板的非類型形參而言,求值結果相同的表達式被認為是等價的。

在函數模板內部完成的操作限制了可用於實例化該函數的類型。程序員的責任是,保證用作函數實參的類型實際上支持所用的任意操作,以及保證在模板使用那些操作的環境中那些操作運行正常。

編寫模板代碼時,對實參類型的要求盡可能少是很有益的。

雖然簡單,但它說明了編寫泛型代碼的兩個重要原則:

模板的形參是const引用。

函數體中的測試只用<比較。

通過將形參設為const引用,就可以允許使用不允許復制的類型。

 摘自 xufei96的專欄
 

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