那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++之類模板深入學習的總結

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 15:46 ? 次閱讀

一、類模板的深入學習:

1、類模板可以定義任意多個不同的類型參數(這一點和模板函數一樣)

template < typename T1, typenaem T2 >
class Test

public
void add(T1 a, T2 b);

//定義類對象時
Test

2、類模板可以被特化

指定類模板的特定實現

部分類參數必須顯示指定

根據類型參數分開實現類模板

特化前:

template < typename T1, typename T2 >
class Test


};

特化后:

template < typename T >
class Test < T , T >

};

3、類模板的特化類型:

部分特化:用特定的規則約束類型參數

完全特化:完全顯示指定類型參數

完全特化前:

template

完全特化后:

template < >
class Test < int, int>

};

代碼實踐:

#include

輸出結果:

root@txp-virtual-machine:/home/txp# ./a.out
void add(T1 a, T2 b)
3.5
void add(T a, T b)
10
class Test < T , T >
void add(void* a, void* b)
error to add void* parm
void add(T1* a, T2* b)
1.1

4、類模板特化注意事項:

(1)特化只是模板的分開實現

本質上是同一個類模板

(2)特化類模板的使用方式是統一的

必須顯示指定每一個類型參數

5、類模板特化與重定義有區別嗎?函數模板可以特化嗎?

(1)重定義和特化的不同:

重定義:

--一個類模板和一個新類(或者兩個類模板)

--使用的時候需要考慮如何選擇的問題

特化:

--以統一的方式類使用類模板的特化類

--編譯器自動優先選擇特化類

(2)函數模板只支持參數完全特化

函數模板特化前:

template < typename T >
bool Equal(T a, T b)

return a==b;

函數模板完全特化后:

template < >
bool Euqal

代碼實踐:

#include

輸出結果:

root@txp-virtual-machine:/home/txp# ./a.out
bool Equal(T a, T b)
1
bool Equal

注解:當需要重載函數模板時,優先考慮使用模板特化;當模板特化無法滿足需求,再使用函數重載

二、總結:

類模板可以定義任意多個不同的類型參數

類模板可以被部分特化和完全特化

特化的本質是模板的分開實現

函數模板只支持完全特化

工程中使用模板特化代替類(函數)重定義

好了,今天的分享就到這里,如果文章中有錯誤或者不理解的地方,可以交流互動,一起進步。我是txp,下期見!

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 可編程邏輯
    +關注

    關注

    7

    文章

    517

    瀏覽量

    44178
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73854
收藏 人收藏

    評論

    相關推薦

    Spire.XLS for C++組件說明

    開發人員可以快速地在 C++ 平臺上完成對 Excel 的各種編程操作,如根據模板創建新的 Excel 文檔,編輯現有 Excel 文檔,以及對 Excel 文檔進行轉換。 Spire.XLS
    的頭像 發表于 01-14 09:40 ?145次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    同樣是函數,在CC++中有什么區別

    同樣是函數,在 CC++ 中有什么區別? 第一個返回值。 C語言的函數可以不寫返回值類型,編譯器會默認為返回 int。 但是 C++ 的函數,除了構造和析構這兩個特殊的函數,必須
    的頭像 發表于 11-29 10:25 ?429次閱讀

    ADS1299EEGFE-PDK在window上如何通過C++讀取8通道數據?

    入手了一塊ADS1299EEGFE-PDK,想用這塊板做eeg測試,開發語言是c++,window平臺,這塊板沒有提供sdk之類的,怎么獲取8個通道的數據,有沒有做過的朋友?
    發表于 11-27 06:51

    C7000 C/C++優化指南用戶手冊

    電子發燒友網站提供《C7000 C/C++優化指南用戶手冊.pdf》資料免費下載
    發表于 11-09 15:00 ?0次下載
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優化指南用戶手冊

    TMS320C6000優化C/C++編譯器v8.3.x

    電子發燒友網站提供《TMS320C6000優化C/C++編譯器v8.3.x.pdf》資料免費下載
    發表于 11-01 09:35 ?0次下載
    TMS320<b class='flag-5'>C</b>6000優化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v8.3.x

    C語言和C++中結構體的區別

    同樣是結構體,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?354次閱讀

    C7000優化C/C++編譯器

    電子發燒友網站提供《C7000優化C/C++編譯器.pdf》資料免費下載
    發表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器

    如何學習ARM?

    ARM 處理器架構: 學習 ARM 處理器的架構是學習的核心。ARM 架構有不同的版本,如 ARMv7、ARMv8 等。你可以從學習 ARMv7 開始,逐步深入學習其他版本的細節。
    發表于 10-11 10:42

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都覺得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的優化與整理,已經是非常貼近開發的使用習慣與推理方式。與OpenCV的Mat對象對接方式更是幾乎無縫對接,非常的方便好用。
    的頭像 發表于 07-26 09:20 ?1057次閱讀

    C++語言基礎知識

    電子發燒友網站提供《C++語言基礎知識.pdf》資料免費下載
    發表于 07-19 10:58 ?7次下載

    C++中實現類似instanceof的方法

    C++有多態與繼承,但是很多人開始學習C++,有時候會面臨一個常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++ 可以向Java或者Python中有insta
    的頭像 發表于 07-18 10:16 ?673次閱讀
    <b class='flag-5'>C++</b>中實現類似instanceof的方法

    嵌入式開發學習

    我在學校專注于學這一門,感覺特別受用,所以想深入學習一些關于嵌入式的一些知識
    發表于 07-09 08:24

    鴻蒙OS開發實例:【Native C++

    使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C
    的頭像 發表于 04-14 11:43 ?2764次閱讀
    鴻蒙OS開發實例:【Native <b class='flag-5'>C++</b>】

    FPGA學習筆記-入門

    大概10年前,大學同學建議我學習DSP。當因為工作忙,也只是簡單學習了DSP的一些基礎知識,沒有進一步深入學習和時間。結果現在,好像DSP已經不再是主流了,現在有了FPGA。 現在想想,可能沒
    發表于 04-09 10:55

    使用 MISRA C++:2023? 避免基于范圍的 for 循環中的錯誤

    在前兩篇博客中,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客中,我們將仔細研究以 C++ 中?for?循環為中心的特定規則。
    的頭像 發表于 03-28 13:53 ?861次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環中的錯誤
    星级百家乐官网技巧| 君豪棋牌信誉怎么样| 博威娱乐在线| 百家乐官网能赢到钱吗| 百家乐官网画面| 百家乐推饼| 皇冠赔率| 玩百家乐官网澳门皇宫娱乐城 | 大发888娱乐游戏可以玩吗| 保险百家乐官网怎么玩| 赌场百家乐欺诈方法| 波克棋牌游戏大厅下载| 澳门百家乐官网赢钱秘| 网上百家乐赌博犯法吗| 大发888娱乐登陆| 百家乐官网规则好学吗| 百家乐技术交流群| 大发888下载安全的| 香港百家乐官网赌场| 百家乐澳门百家乐澳门赌场| 娱乐城开户送38体验金| 百家乐官网电子发牌盒| 在线百家乐策| 百家乐官网电脑游戏高手| 百家乐三珠连跳打法| 波克棋牌游戏大厅| 百家乐官网有人玩吗| 博彩百家乐画谜网| 漳平市| 百家乐连线游戏下载| 澳门网上博彩| 百樂坊百家乐官网的玩法技巧和规则 | 大西洋城| 新澳门百家乐官网的玩法技巧和规则| 大发888娱乐城官方下载lm0| 百家乐官网网站排名| 太阳百家乐开户| 百家乐官网游戏下载| 全迅网百家乐的玩法技巧和规则 | 赌博百家乐官网探讨| 百家乐真人游戏棋牌|