您可以使用明確具現化,建立樣板化類別或函式的具現化,而在程式碼中實際使用它。 因為當您建立使用範本進行散發的連結庫 (.lib) 檔案時,不會將未經驗證的範本定義放入物件 (.obj) 檔案中,所以會很有用。
範例
此程式代碼會明確具現化MyStackint變數和六個專案:
template class MyStack<int, 6>;
這個陳述式建立 MyStack 的具現化,沒有保留物件的任何儲存區。 程式碼為所有成員產生。
下一行只明確具現化建構函式成員函式:
template MyStack<int, 6>::MyStack( void );
您可以使用特定的類型自變數來重新宣告函式範本,以明確具現化函式範本,如函式範本具現化中的範例所示。
您可以使用 extern 關鍵詞來防止成員的自動具現化。 例如:
extern template class MyStack<int, 6>;
同樣地,您可以將特定成員標記為外部和未具現化:
extern template MyStack<int, 6>::MyStack( void );
您可以使用 extern 關鍵詞,讓編譯程式在多個物件模組中產生相同的具現化程序代碼。 如果呼叫函式,您必須在至少一個連結的模組中使用指定的明確範本參數來具現化函式範本。 否則,建置程式時,您會收到鏈接器錯誤。
注意
extern特製化的 關鍵詞只適用於類別主體外部定義的成員函式。 類別宣告內定義的函式被視為內嵌函式,永遠會具現化。