丁香五月婷婷黄色视频_97在线看观看免费_男女xo嘿咻嘿咻动态图_最近更新在线中文字幕人妻

?

模板偏特化翻譯 09 非類型模板參數(shù)、模板的特化、分離編譯

日期:2023-03-11 12:39:36 / 人氣: 524 / 發(fā)布者:成都翻譯公司

浮點數(shù)、類對象以及字符串是不允許作為非類型模板參數(shù)的(即只允許整形家族:int、long、longlong、char)非類型模板參數(shù)必須在編譯期就能確認(rèn)結(jié)果,因為編譯器在編譯階段需要根據(jù)傳入的非類型模板參數(shù)實例化出對應(yīng)的類或函數(shù)。不支持分離編譯,所有用基于模板算法的實現(xiàn)必須包含在整個設(shè)計的頭文件中。

文章目錄

一、非類型模板參數(shù)

模板參數(shù)有兩種類型:1. 類型參數(shù)和2. 非類型參數(shù)。

類型參數(shù):出現(xiàn)在模板參數(shù)列表中并跟在類或類型名之后的參數(shù)。

非類型參數(shù):使用常量作為類(函數(shù))模板的參數(shù)。該參數(shù)可以用作類(函數(shù))模板中的常量。

比如需要在類中打開一個靜態(tài)數(shù)組,但是大小未知。在這種情況下,可以使用非類型參數(shù):

另外模板偏特化翻譯,模板參數(shù)也可以寫成默認(rèn)參數(shù):

注意:

浮點數(shù)、類對象和字符串不允許作為非類型模板參數(shù)(即只有整數(shù)族:int、long、longlong、char)。非類型模板參數(shù)必須在編譯時確認(rèn),因為編譯器在編譯階段需要根據(jù)傳入的非類型模板參數(shù)實例化對應(yīng)的類或函數(shù)。二、 模板特化

雖然模板沒有限制類型,但并不是所有類型都能得到我們想要的結(jié)果。比如這樣的函數(shù)模板并不能達(dá)到我們比較字符串的目的:

這時候就需要對模板進(jìn)行特化,即在原有模板的基礎(chǔ)上,對特殊類型進(jìn)行特殊類型的實現(xiàn),模板特化分為函數(shù)模板特化和類模板特化。

2.1. 函數(shù)模板特化

函數(shù)模板的特化步驟:

首先,必須有一個基本的函數(shù)模板。關(guān)鍵字模板后跟一對空尖括號。函數(shù)名后跟一對尖括號,尖括號中指定需要特化的類型。函數(shù)參數(shù)列表必須與模板函數(shù)的基本參數(shù)類型完全一致,否則不同的編譯器可能會報一些奇怪的錯誤。

例如,上面的字符串類型可以特化如下:

另外模板偏特化翻譯,當(dāng)函數(shù)模板和類型匹配函數(shù)同時存在時,編譯器會優(yōu)先調(diào)用類型匹配函數(shù),不會根據(jù)函數(shù)模板實例化對應(yīng)的函數(shù),所以函數(shù)可以直接直接給。而不是專門:

2.2. 類模板和全專業(yè)化

全特化是確定模板參數(shù)列表中的所有參數(shù)。

偏專業(yè)

部分特化就是將部分參數(shù)特化,或者將參數(shù)指定為指針、引用等:

當(dāng)然,如果有兩個專門的模板匹配,就會報錯:

三、 模板分離編譯

一個程序由多個源文件實現(xiàn)。每個源文件分別生成一個 .o 目標(biāo)文件。*后,將所有目標(biāo)文件鏈接起來生成可執(zhí)行文件的過程稱為分離編譯模式。比如函數(shù)聲明寫在.h頭文件中,函數(shù)定義寫在.cpp文件中。您可以通過在主文件中包含此頭文件來使用該函數(shù)。

單獨編譯有以下優(yōu)點:

它可以提高編譯速度。比如修改了其中一個文件,單獨編譯只需要單獨編譯修改后的文件,大大節(jié)省了編譯時間。

易于管理和閱讀代碼

閱讀和管理整個文檔很麻煩。當(dāng)文檔被分成小模塊時,閱讀感更好,管理更方便。3.1 為什么模板不支持單獨編譯

程序一般需要經(jīng)過以下四個步驟才能運行:

預(yù)處理:頭文件擴(kuò)展、反注釋、宏替換、條件編譯等。代碼檢查無誤后轉(zhuǎn)成匯編語言。注意:頭文件不參與編譯,編譯器將項目中的多個源文件分開編譯。程序集:將編譯后的程序集文件翻譯成二進(jìn)制目標(biāo)文件。鏈接:鏈接生成的目標(biāo)文件以生成可執(zhí)行文件。

綜上所述,定義的地方?jīng)]有實例化,唯一需要實例化的地方就是沒有定義的聲明,*終導(dǎo)致鏈接錯誤。

解決方案:

將聲明和定義放在同一個 .h 文件中。模板定義的位置顯示實例化(不推薦,因為需要自己手動展示和實例化一個函數(shù),會失去模板的意義)。3.2. 模板的優(yōu)缺點

優(yōu)勢:

模板增強(qiáng)了代碼的可重用性,節(jié)省了資源,加快了迭代開發(fā)。C++ 標(biāo)準(zhǔn)模板庫 (STL) 也已生成。僅出現(xiàn)在 C++98 中的模板,以及出現(xiàn)在模板之后的 STL 庫增強(qiáng) 代碼的靈活性

相同的功能接口,但是輸入的參數(shù)類型不同,只需要傳入不同的參數(shù),即可以實例化不同的模板代碼。比如排序問題,可以對int型數(shù)據(jù)和cha型數(shù)據(jù)進(jìn)行排序。在不引入模板的情況下,需要編寫兩次排序函數(shù)。引入模板后,可以在實例化時根據(jù)不同的數(shù)據(jù)類型實例化排序方法。

缺點:

某些 C++ 編譯器尚不支持模板。使用這些編譯器編譯包含模板的代碼時,會出現(xiàn)不兼容的問題。

不支持單獨編譯,所有使用基于模板的算法的實現(xiàn)都必須包含在整個設(shè)計的頭文件中。

相關(guān)閱讀Relate

  • 法國簽證營業(yè)執(zhí)照翻譯件模板 你與申根簽證只有一條推送的距離
  • 江蘇省增值稅發(fā)票翻譯模板 江蘇稅務(wù)局出口貨物退(免)稅申報管理系統(tǒng)軟件
  • 肄業(yè)證書翻譯模板 復(fù)旦大學(xué)學(xué)生學(xué)業(yè)證明文書管理細(xì)則(試行)
  • 四級英語作文模板帶翻譯 大學(xué)英語四級翻譯模擬訓(xùn)練及答案
  • 社會某信用代碼證翻譯模板 js驗證某社會信用代碼,某社會信用代碼 驗證js,js+驗證+社會信用代碼證
  • 美國移民證件翻譯模板 日語簽證翻譯聊聊身份證翻譯模板
  • 翻譯軟件模板 人類史上*實用的的文檔快速翻譯指南
  • 江蘇省增值稅發(fā)票翻譯模板 江蘇出口貨物退(免)稅申報管理服務(wù)平臺
  • 瑞士簽證房產(chǎn)證翻譯件模板 瑞士探親簽證—就讀子女
  • 日語戶口本翻譯模板 戶口本翻譯價格_戶口本翻譯一般多少錢?
  • 模板偏特化翻譯 09 非類型模板參數(shù)、模板的特化、分離編譯 www.angeldealglobal.com/fymb/4976.html
    ?
    本站部分內(nèi)容和圖片來源于網(wǎng)絡(luò)用戶和讀者投稿,不確定投稿用戶享有完全著作權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果侵犯了您的權(quán)利,請聯(lián)系:chinazxzy@163.com,及時刪除。
    Go To Top 回頂部
    • 掃一掃,微信在線