C++學習記事本

template顯式實例化與隱式實例化

模板實例化都是在編譯期完成的,不管是顯式實例化還是隱式實例化。
區別是隱式實例化只有到編譯器發現某個模板實例需要用到時,纔會進行實例化。顯式實例化可以提前告訴模板去爲某個類型進行實例化,無論後面會不會用到它。
所以,顯式實例化可以將模板的聲明和定義分離,隱藏實現,前提是我們只會用到被顯式實例化的幾個類型。而隱式實例化不可以,如果分離,編譯時會無法鏈接(因爲找不到定義/實現)。
https://en.cppreference.com/w/cpp/language/class_template

typename使用規範

對於用於模板定義的依賴於模板參數的名稱,只有在實例化的參數中存在這個類型名,或者這個名稱前使用了typename關鍵字來修飾,編譯器纔會將該名稱當成是類型。除了以上這兩種情況,絕不會被當成是類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章