模板的編譯

       當編譯器遇到一個模板定義時,它並不生成代碼。只有當我們實例化出模板的一個特定版本時,編譯器纔會生成代碼。當我們使用(而不是定義)模板時,編譯器才生成代碼,這一特性影響了我們如何組織代碼以及錯誤合適被檢測到。

       通常,當我們調用一個函數的時,編譯器只需要掌握函數的聲明。類似的,當我們使用一個類類型的對象時,類定義必須是可用的,但成員函數的定義不必已經出現。因此,我們將類定義和函數聲明放在頭文件中,而普通函數和類的成員函數的定義放在源文件中。

      模板則不同:爲了生成一個實例化版本,編譯器需要掌握函數模板和類模板成員函數的定義。因此,與非模板代碼不同,模板的頭文件通常擊包括生命也包括定義。



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