欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

EasyC++模板重載

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

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

1.重載模板

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

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

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

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

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


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

所以我們實(shí)現(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.問題

到這里,相信大家也能看出一點(diǎn)問題。

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

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


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

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

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

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

相關(guān)文章

  • C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題

    C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題

    這篇文章主要介紹了C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言 完整游戲項(xiàng)目推箱子詳細(xì)代碼

    C語言 完整游戲項(xiàng)目推箱子詳細(xì)代碼

    經(jīng)典的推箱子是一個(gè)的古老游戲,目的是在訓(xùn)練你的邏輯思考能力。在一個(gè)狹小的倉庫中,要求把木箱放到指定的位置,稍不小心就會出現(xiàn)箱子無法移動(dòng)或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動(dòng)的次序和位置,才能順利的完成任務(wù)
    2021-11-11
  • C++知識點(diǎn)之成員函數(shù)中const的用法

    C++知識點(diǎn)之成員函數(shù)中const的用法

    這篇文章主要介紹了C++知識點(diǎn)之成員函數(shù)中const的用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 利用C++實(shí)現(xiàn)雙鏈表基本接口示例代碼

    利用C++實(shí)現(xiàn)雙鏈表基本接口示例代碼

    雙鏈表:在單鏈表的每個(gè)結(jié)點(diǎn)中,再設(shè)置一個(gè)指向其前驅(qū)結(jié)點(diǎn)的指針域,下面這篇文章主要給大家介紹了關(guān)于利用C++實(shí)現(xiàn)雙鏈表基本接口的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • C++編程小心指針被delete兩次

    C++編程小心指針被delete兩次

    這篇文章主要介紹了C++編程指針被delete兩次的嚴(yán)重后果,以實(shí)例闡述了C++指針使用中的誤區(qū)和注意點(diǎn),需要的朋友可以參考下
    2014-07-07
  • 如何使用arm-none-eabi-gcc編譯器搭建STM32的Vscode開發(fā)環(huán)境

    如何使用arm-none-eabi-gcc編譯器搭建STM32的Vscode開發(fā)環(huán)境

    這篇文章主要介紹了使用arm-none-eabi-gcc編譯器搭建STM32的Vscode開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • C/C++ break和continue區(qū)別及使用方法

    C/C++ break和continue區(qū)別及使用方法

    這篇文章主要介紹了C/C++ break和continue區(qū)別及使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 用C語言實(shí)現(xiàn)三子棋游戲

    用C語言實(shí)現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了用C語言實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++中MFC Tab Control控件的使用詳解

    C++中MFC Tab Control控件的使用詳解

    這篇文章主要介紹了C++中MFC Tab Control控件的使用詳解的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • C/C++數(shù)據(jù)對齊詳細(xì)解析

    C/C++數(shù)據(jù)對齊詳細(xì)解析

    通常我們在寫代碼的時(shí)候是不需要考慮對齊的影響的,都是依賴編譯器來為我們選擇適合的對齊策略,我們也可以通過傳遞給編譯器預(yù)編譯指令來指定數(shù)據(jù)對齊的方法
    2013-10-10

最新評論