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

EasyC++函數(shù)模板介紹

 更新時(shí)間:2021年12月17日 08:46:03   作者:梁唐  
這篇文章主要介紹了C++函數(shù)模板介紹,所謂函數(shù)的模板,本質(zhì)上也就是使用泛型來定義函數(shù),所謂的泛型其實(shí)也就是不定的類型,比如說我們使用vector的時(shí)候,可以定義各種類型的vector,下面我們一起進(jìn)入文章詳細(xì)了解一下C++函數(shù)模板,需要的朋友可以參考一下

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

函數(shù)模板:

所謂函數(shù)的模板,本質(zhì)上也就是使用泛型來定義函數(shù)。

所謂的泛型其實(shí)也就是不定的類型,比如說我們使用vector的時(shí)候,可以定義各種類型的vector,可以定義存儲(chǔ)int型的vector也可以定義存儲(chǔ)float類型的,也可以定義存儲(chǔ)其他類型。我們在聲明的時(shí)候?qū)⒋鎯?chǔ)的類型當(dāng)做參數(shù)傳給了模板。

泛型可以用具體的類型,比如(int或double)替換,通過將類型作為參數(shù)傳給模板,編譯器會(huì)根據(jù)傳遞的參數(shù)類型生成該類型的函數(shù)。這種方式也被稱為通用編程或者參數(shù)化類型。

舉一個(gè)很簡單的例子,比如說我們要實(shí)現(xiàn)一個(gè)函數(shù)交換兩個(gè)變量的值。對于int類型我們要實(shí)現(xiàn)一遍,對于double類型我們又要實(shí)現(xiàn)一遍,如果還需要其他類型,那么又需要額外實(shí)現(xiàn)很多同樣邏輯的函數(shù)。當(dāng)然可以拷貝代碼,但顯然這樣會(huì)很浪費(fèi)時(shí)間,而且會(huì)使得代碼變得臃腫。

這個(gè)時(shí)候我們就可以使用函數(shù)模板自動(dòng)完成這一功能,函數(shù)模板允許以任意類型來定義函數(shù),所以我們就可以這樣實(shí)現(xiàn):

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


當(dāng)我們要?jiǎng)?chuàng)建一個(gè)模板的時(shí)候,需要首先聲明模板的類型,也就是template語句做的事情。關(guān)鍵字typename也是必須的,也可以使用class代替。typename關(guān)鍵字是在C++98標(biāo)準(zhǔn)添加的,所以在更早的版本中往往使用class。在這個(gè)場景下,這兩種方式是等價(jià)的。C++ Primer當(dāng)中更建議使用typename而非class。

typename之后跟的是類型的名稱,我們可以使用任意的名字,一般來說習(xí)慣性地會(huì)使用字母T。我們在使用的時(shí)候和普通函數(shù)并沒有什么不同,當(dāng)做普通函數(shù)使用即可。

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

int i = 10, j = 20;
swap(i, j);
double a = 3.0, b = 4.0;
swap(a, b);


雖然我們只實(shí)現(xiàn)了一次函數(shù),但是在編譯的時(shí)候,編譯器會(huì)將這個(gè)函數(shù)根據(jù)我們使用的情況生成多個(gè)版本。比如在上面的代碼當(dāng)中,我們使用了int和double兩種類型的函數(shù)。編譯器會(huì)替我們生成兩份代碼,也就是說最終代碼上和我們手動(dòng)實(shí)現(xiàn)函數(shù)重載是一樣的,可以理解成一種方便我們程序編寫的特性。

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

相關(guān)文章

  • Qt中利用QTextBrowser控件設(shè)計(jì)日志窗口

    Qt中利用QTextBrowser控件設(shè)計(jì)日志窗口

    本文主要介紹了Qt中利用QTextBrowser控件設(shè)計(jì)日志窗口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • C++實(shí)現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù))

    C++實(shí)現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++進(jìn)化后的const變量實(shí)例探究

    C++進(jìn)化后的const變量實(shí)例探究

    這篇文章主要為大家介紹了C++進(jìn)化后的const變量實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 可能是全網(wǎng)最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫教程

    可能是全網(wǎng)最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫教程

    QT眾所周知是一個(gè)開源的,以C++為底層的可視化工具庫,下面這篇文章主要給大家介紹了關(guān)于最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫教程的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • C++排序算法之插入排序

    C++排序算法之插入排序

    這篇文章主要為大家詳細(xì)介紹了C++排序算法之插入排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 通過C語言判斷字符串是否為點(diǎn)分十進(jìn)制的IP地址

    通過C語言判斷字符串是否為點(diǎn)分十進(jìn)制的IP地址

    這篇文章主要為大家詳細(xì)介紹了如何通過C語言判斷字符串是否為點(diǎn)分十進(jìn)制的IP地址,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • QT通過C++線程池運(yùn)行Lambda自定義函數(shù)流程詳解

    QT通過C++線程池運(yùn)行Lambda自定義函數(shù)流程詳解

    最近在接觸公司的一個(gè)QT桌面項(xiàng)目,其中里面有一個(gè)模塊是使用線程池去運(yùn)行自定義函數(shù)的,自己潛心研究那個(gè)線程池代碼一天,發(fā)現(xiàn)研究不透,看不懂,里面幾乎都是使用C++11的新特性進(jìn)行編寫
    2022-10-10
  • C語言實(shí)現(xiàn)簡單猜數(shù)字小游戲

    C語言實(shí)現(xiàn)簡單猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Dashboard Interface 應(yīng)用實(shí)現(xiàn)操作

    Dashboard Interface 應(yīng)用實(shí)現(xiàn)操作

    Dashboard Server Remote Control Interface是一個(gè)關(guān)鍵的功能,它為用戶提供了通過TCP/IP協(xié)議遠(yuǎn)程控制機(jī)器人的能力,執(zhí)行包括開關(guān)機(jī)、加載程序、檢查機(jī)器人狀態(tài)以及設(shè)置機(jī)器人操作模式等多種操作,本文介紹Dashboard Interface 應(yīng)用操作,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • C語言編寫猜數(shù)游戲

    C語言編寫猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了C語言編寫猜數(shù)游戲,可以自定義猜數(shù)范圍和機(jī)會(huì)次數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

三原县| 荔浦县| 富锦市| 嵊泗县| 宿迁市| 临武县| 汉阴县| 甘谷县| 双辽市| 屏南县| 嘉峪关市| 当阳市| 开阳县| 太保市| 鄂尔多斯市| 屏南县| 红安县| 石棉县| 武威市| 奎屯市| 华阴市| 清远市| 驻马店市| 会同县| 泰安市| 瑞安市| 新郑市| 尤溪县| 武清区| 天全县| 克东县| 台南市| 恩施市| 抚松县| 普安县| 常宁市| 苏尼特左旗| 石景山区| 乌兰县| 浦北县| 阿城市|