最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

EasyC++模板重載

 更新時間:2021年12月17日 08:45:38   作者:梁唐  
這篇文章主要介紹了C++模板重載,重載的模板的函數(shù)特征,也就是入?yún)⒌臄?shù)量和類型必須有所不同,下面我們講舉例說明此內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下

?文章轉(zhuǎn)自 公眾號:Coder梁(ID:Coder_LT)

1.重載模板

函數(shù)模板可以使得同一個函數(shù)對不同類型使用,非常地方便。但有的時候類型不同,只是通過模板是沒辦法解決的, 可能邏輯上也會有所區(qū)別,這個時候只是使用模板是無法解決的。

為了滿足這種需求,我們可以像是重載函數(shù)那樣重載模板。和常規(guī)的函數(shù)一樣,重載的模板的函數(shù)特征,也就是入?yún)⒌臄?shù)量和類型必須有所不同。

舉個例子:比如我們之前定義了一個函數(shù)模板用來交換兩個變量的值。如果我們要交換的不只是變量,而是兩個數(shù)組,就必須要修改邏輯了。

template <typename T>
void Swap(T &a, T &b);

template <typename T>
void Swap(T *a, T *b, int n);


可以看到我們額外傳入了一個int n,它表示數(shù)組的長度。另外,我們?nèi)雲(yún)⒌念愋鸵舶l(fā)生了變化,不再是模板類型T的引用,而是指針了。因為我們要接收的是一個數(shù)組,而數(shù)組在函數(shù)傳遞當(dāng)中都是以指針的形式進(jìn)行的。所以這里要寫成指針,當(dāng)然也可以寫成這樣:T a[],兩種形式本質(zhì)上沒有區(qū)別。

所以我們實現(xiàn)的話會是這樣:

template <typename T>
void Swap(T &a, T &b) {
    T temp = a;
    a = b;
    b = temp;
}

template <typename T>
void Swap(T *a, T *b, int n) {
    for (int i = 0; i < n; i++) {
        Swap(a[i], b[i]);
    }
}


2.問題

到這里,相信大家也能看出一點問題。

假設(shè)我們有這樣一個模板函數(shù):

template <typename T>
void Swap(T a, T b);


雖然理論上類型T是萬能類型,什么類型都可以接受。但我們操作的時候會有很多問題,比如我們執(zhí)行a = b,對于數(shù)組類型就會報錯。

再比如我們執(zhí)行a > b,很多類型也無法進(jìn)行比較大小。再比如進(jìn)行算術(shù)運算等等,很多類型比如指針、數(shù)組或者結(jié)構(gòu)體也沒辦法進(jìn)行算術(shù)運算。

總之模板的功能是很局限的,有的時候只能處理某些類型,很難通用覆蓋所有情況。當(dāng)然有的時候也是有一些其他辦法繞開的,比如結(jié)構(gòu)體也可以重載比較運算符,也可以重載一些算術(shù)運算符等等。

到此這篇關(guān)于C++模板重載的文章就介紹到這了,更多相關(guān)C++模板重載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 遍歷某個文件夾下所有文件的方法步驟

    C++ 遍歷某個文件夾下所有文件的方法步驟

    這篇文章主要介紹了C++ 遍歷某個文件夾下所有文件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C++ 17標(biāo)準(zhǔn)正式發(fā)布! 更簡單地編寫和維護(hù)代碼

    C++ 17標(biāo)準(zhǔn)正式發(fā)布! 更簡單地編寫和維護(hù)代碼

    C++ 17 標(biāo)準(zhǔn)正式發(fā)布:終于能更簡單地編寫和維護(hù)代碼了!本文為大家介紹了C ++ 17 主要特性,感興趣的小伙伴們可以參考一下
    2017-12-12
  • C語言數(shù)據(jù)結(jié)構(gòu)之?dāng)U展字符詳解

    C語言數(shù)據(jù)結(jié)構(gòu)之?dāng)U展字符詳解

    掌握C語言數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵在于理解其核心概念,擴展字符作為其中的重要一環(huán),對于編程人員來說至關(guān)重要,本指南將為您深入剖析擴展字符的相關(guān)知識,帶您輕松掌握C語言數(shù)據(jù)結(jié)構(gòu),讓我們一起探索這個令人著迷的領(lǐng)域吧!
    2024-03-03
  • c++實現(xiàn)加載so動態(tài)庫中的資源

    c++實現(xiàn)加載so動態(tài)庫中的資源

    下面小編就為大家?guī)硪黄猚++實現(xiàn)加載so動態(tài)庫中的資源。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 最新評論

    芷江| 保山市| 信宜市| 文安县| 东阿县| 紫云| 茶陵县| 广丰县| 大兴区| 全南县| 白银市| 栖霞市| 凭祥市| 聂拉木县| 翼城县| 萍乡市| 泸州市| 澄迈县| 井研县| 德昌县| 双流县| 合川市| 措美县| 高雄县| 扎鲁特旗| 洛隆县| 荔浦县| 古蔺县| 吉水县| 华容县| 茌平县| 土默特左旗| 淄博市| 连州市| 湖北省| 洮南市| 休宁县| 吉木萨尔县| 泽普县| 芦溪县| 陵水|