精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    514

    瀏覽量

    44072
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73489
收藏 人收藏

    評論

    相關推薦

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

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

    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

    C++語言基礎知識

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

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

    C++有多態與繼承,但是很多人開始學習C++,有時候會面臨一個常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++ 可以向Java或者Python中有insta
    的頭像 發表于 07-18 10:16 ?534次閱讀
    <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 ?2504次閱讀
    鴻蒙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 ?737次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環中的錯誤

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門語言。 C++C++是在
    的頭像 發表于 02-05 14:11 ?2234次閱讀

    C++簡史:C++是如何開始的

    的 MISRA C++:2023 博客系列的第二部分。 在這篇博客中,我們將深入探討 C++ 的歷史、編程語言多年來的發展歷程以及它的下一步發展方向。
    的頭像 發表于 01-11 09:00 ?536次閱讀
    <b class='flag-5'>C++</b>簡史:<b class='flag-5'>C++</b>是如何開始的

    C語言和C++中那些不同的地方

    C語言雖說經常和C++在一起被大家提起,但可千萬不要以為它們是一個東西。現在我們常用的C語言是C89標準,C++
    的頭像 發表于 12-07 14:29 ?907次閱讀
    <b class='flag-5'>C</b>語言和<b class='flag-5'>C++</b>中那些不同的地方

    開箱即用!教你如何正確使用華為云CodeArts IDE for C/C++

    華為云CodeArts IDE 定位華為云開發者桌面 ,是華為云面向開發者提供的一款智能化桌面集成開發環境。CodeArts IDE for C/C++集成了華為自研的C/C++語言服
    的頭像 發表于 11-29 17:40 ?759次閱讀
    開箱即用!教你如何正確使用華為云CodeArts IDE for <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>!

    如何選擇創建c語言和c++

    選擇創建 C 語言和 C++ 都需要綜合考慮多個因素。在決定使用哪種語言之前,我們需要對這兩種語言的特點、優缺點、適用場景、學習成本等進行全面的了解和對比。下面是關于選擇創建 C 語言
    的頭像 發表于 11-27 15:58 ?569次閱讀

    c++怎么開始編程

    C++是一種高級的、通用的編程語言,用于開發各種類型的應用程序。它是從C語言演變而來,也是一種靜態類型語言,可以在不同的平臺上進行開發。C++具有高度的靈活性和性能,并且廣泛應用于游戲開發、桌面
    的頭像 發表于 11-27 15:56 ?894次閱讀