模板函數編譯原理

一--- 導讀linux

   首先咱們須要搞清楚這樣一個實際生活中的例子,當工廠裏面要生產一把刀,須要將滾燙的鐵水倒入到模具裏面,而後再通過錘鍊就獲得一把鋒利的刀。函數模板和模板函數正是這樣的一組關係,函數模板至關於作刀的模具,而模板函數就是咱們獲得的刀。程序員

 

二---在linux中進行實際操做函數

首先咱們先寫一個hello.cpp文件,裏面放一個函數模板和三組調用spa

輸入以下命令進行編譯3d

編譯完成咱們再看一下hello.s文件blog

雖然有3個MyAdd函數,但細心的同窗就會發現,第一個和第三個是同名的,都是IiET-的形式,這是由於第一此調用和第三次調用參數的類型是相同的,都爲int類型,編譯器在編譯第一個調用的時候就已經生成了int類型的模板函數。編譯器

 

三---模板函數誕生編譯器編譯次數編譯

  編譯器一開始會在模板聲明的地方先編譯函數模板,根據寫編譯器的程序員們指定的規則,生成相應的函數模板代碼。以後若編譯器發現有 調用,又會在調用的地方編譯一次,生成相應類型的調用代碼。故而一次調用編譯器須要編譯兩次模板

 

四---注意事項程序

  編譯器並非把函數模板直接拿來用,函數模板是不能直接使用的,編譯器調用的是以函數模板爲型生成的模板函數。這裏只要看了導讀所說的內容就應該很容易理解。

相關文章
相關標籤/搜索