-
template
您可以擁有任意數量的課程。
然後是泛型函式定義。
格式是通用的,需要更改的只是型別和函式定義的數量,具體取決於情況。
-
模板定義從關鍵字 template 開始,後跟模板參數列,該表是用尖括號括起來的乙個或多個模板引數的列表,引數之間分隔良好。
使用函式模板時,編譯器會推斷哪個(或哪個)。
模板引數與模板引數繫結。 一旦編譯器確定了實際的模板引數,就說它已經例項化了函式模板的例項。 可以簡單地認為編譯器將引數與模板組合並生成所需的函式。
如果你可以這樣稱呼它:selectsort(mycompare,myarray,6); myarray 可以是整數、浮點數或基於字元的。
通過上述示例編寫的演算法模組從單個函式轉變為多個函式,提高了可復用性,同時為使用者留下了乙個介面,更具互動性和靈活性。
函式模板摘要。
下面我們總結一下編寫函式模板的格式和注意事項(複製自教材):
函式模板。 形式:
template
function
或者:模板
function
更一般的形式:
template
function
在這些形式中,typeparam...。是通用型別表單引數; 每個說明符都是乙個關鍵字 typename 或 class; 而功能是這個功能的原型或定義。 注意:
單詞 template 是乙個 C++ 關鍵字,它指定它後面跟著函式的模式,而不是函式的實際原型或定義。
關鍵字 typename 和 class 可以在型別引數列表中互換使用。
相對於“正常”表單引數(以及實際引數)顯示在括號中,型別引數顯示在尖括號中。
與常規函式不同,函式模板不能分布在多個檔案中,即其原型不能放在標頭檔案中,而其定義不能放在另乙個實現檔案中。 函式模板必須全部放置在標頭檔案中。
函式模板只是一種模式,它描述基於給定的實際型別生成不同的函式。 建立函式的此過程稱為例項化。
在泛型形式中,每種型別的引數必須在函式的引數列表中至少出現一次。 這樣做的原因是,編譯器僅依賴於函式呼叫中引數的型別來決定要繫結到型別引數的型別。
-
函式模板
使用函式模板,可以指定一組基於相同但處理不同型別或類的函式,例如:
template void myswap( type& a, type& b )
本段定義了一系列函式來交換函式的引數值。 從此模板中,您可以生成一系列函式,這些函式不僅可以交換整數、長整數,還可以交換使用者定義的型別,如果正確定義了類的建構函式和賦值運算子,甚至可以交換 myswap 函式。
此外,函式模板可以防止交換不同型別的物件,因為編譯器在編譯時知道引數 a 和 b 的型別。
您可以像呼叫普通函式一樣呼叫函式模板函式; 不需要特殊語法。 例如:
int i, j;
char k;
myswap( i, j );//ok
myswap( i, k );//error, different types.
您可以對外描述函式模板的模板引數,例如:
templatevoid f(t)
void g(char j)
當對外指定模板引數時,正常的固定型別轉換會將函式引數轉換為相應的函式模板引數。 在上面的示例中,編譯器將 (char j) 轉換為整數。
-
函式模板》介紹了函式模板的概念、用途、函式模板的建立方法和函式模板的使用方法。
建築模板是建築中常見的材料,是滿足臨時支護需要的建築結構。 建築模板的種類很多,如:木結構建築模板、清水建築模板、鋼結構建築模板、鋁合金建築模板等,這四種是比較常見的建築模板。 >>>More
zip檔案包,自動解壓無憂,刷卡方式:
4.進入恢復(使用關機鍵+音量+-,因型號而異,前提是要刷機恢復),備份手機的重要資料; >>>More
4.背景:是新聞的歷史情況和環境條件。
5.結論:這是最後一句話或最後一段,是鼓舞人心和激勵人心的語言。 >>>More