国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

函數(shù)重載和引用【C++】

這篇具有很好參考價(jià)值的文章主要介紹了函數(shù)重載和引用【C++】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

函數(shù)重載

什么是函數(shù)重載?

函數(shù)重載:

重載函數(shù)是函數(shù)的一種特殊情況。
為方便使用,C++允許在同一作用域中聲明幾個(gè)功能類似的同名函數(shù),但是這些同名函數(shù)的形式參數(shù)(指1.參數(shù)的個(gè)數(shù) 2.類型 3.順序)必須至少有一個(gè)不同
根據(jù)這些同名函數(shù)的參數(shù)表的不同,達(dá)成傳入?yún)?shù)類型不同,調(diào)用的函數(shù)不同的效果


函數(shù)重載的作用

功能類似的函數(shù)可以用同一名字,不用費(fèi)心思去取差別不大的名字


函數(shù)重載和引用【C++】,c++,c++
如果不用函數(shù)重載,就要給Swap,取Swap1,Swap2等名字容易混淆


使用函數(shù)重載的注意點(diǎn)

  • 函數(shù)重載與函數(shù)的返回值無關(guān)

  • 同名參數(shù)表不同參數(shù)表不同即參數(shù)類型不同或參數(shù)個(gè)數(shù)不同或參數(shù)順序不同滿足三個(gè)條件中的一個(gè)就行)】的函數(shù)就可以構(gòu)成重載

參數(shù)類型不同:

函數(shù)重載和引用【C++】,c++,c++

參數(shù)個(gè)數(shù)不同:

函數(shù)重載和引用【C++】,c++,c++
參數(shù)順序不同:
函數(shù)重載和引用【C++】,c++,c++

  • 只有同一作用域中的同名參數(shù)表不同函數(shù)才構(gòu)成重載
    不同命名空間/類中的同名函數(shù)不可能構(gòu)成重載

  • 重載函數(shù)也可以參數(shù)缺省

    函數(shù)重載和引用【C++】,c++,c++

這個(gè)時(shí)候就要注意:不要因?yàn)?code>少傳參數(shù)而導(dǎo)致調(diào)用的重載函數(shù)不明確

函數(shù)重載和引用【C++】,c++,c++


為什么C++可以函數(shù)重載,C語(yǔ)言不行?

這就又涉及到編譯鏈接了,因?yàn)镃++是在C語(yǔ)言的基礎(chǔ)上出現(xiàn)的,而且C++是兼容C語(yǔ)言的【即C語(yǔ)言的語(yǔ)法在C++編譯器中也能使用】所以C++的編譯鏈接過程和C語(yǔ)言很像

不了解編譯和鏈接的可以看我這篇文章:c語(yǔ)言編譯和鏈接)

為什么C++可以函數(shù)重載,C語(yǔ)言不行?這一問題主要是在編譯鏈接時(shí)的編譯匯編時(shí)的符號(hào)匯總形成符號(hào)表【符號(hào)表:可以簡(jiǎn)單的將其視為 詞法分析時(shí)拆分出來的所有特殊符號(hào)+該特殊符號(hào)對(duì)應(yīng)的地址共同制作出的一份方便鏈接的表】的時(shí)候

C語(yǔ)言編譯鏈接時(shí)函數(shù)名進(jìn)入符號(hào)表時(shí)表中對(duì)應(yīng)的特殊字符就是它的函數(shù)名【不做任何修飾】

而C++的函數(shù)進(jìn)入符號(hào)表時(shí)表中對(duì)應(yīng)的特殊字符是編譯器根據(jù)該函數(shù)的參數(shù)表編譯器自己的修飾規(guī)則每個(gè)編譯器的修飾規(guī)則不同】對(duì)該函數(shù)名進(jìn)行修飾之后的特殊符號(hào),而不是單純的函數(shù)名

上面的差異就在編譯鏈接的鏈接部分起了不同的作用

因?yàn)殒溄邮歉鶕?jù)符號(hào)表中的特殊符號(hào)的名字找它的地址,并以此看它有沒有定義
而C語(yǔ)言如果函數(shù)名同名了,那進(jìn)入符號(hào)表的都是它的函數(shù)名根本區(qū)分不開,就算兩個(gè)函數(shù)都有定義有地址,鏈接時(shí)編譯器根本不知道找那個(gè)。

但C++不同它進(jìn)入符號(hào)的是編譯器根據(jù)該函數(shù)的參數(shù)表編譯器自己的修飾規(guī)則修飾之后的符號(hào),如果它的參數(shù)不同修飾后的符號(hào)就不同,鏈接時(shí)編譯器“一眼“就看出不同了


引用

什么是引用?

引用是給已存在變量取一個(gè)別名,編譯器不會(huì)為引用變量開辟內(nèi)存空間,它和它引用的變量共用同一塊內(nèi)存空間。

即使用一個(gè)變量的引用就是使用該變量,修改它的引用也是修改變量自己


函數(shù)重載和引用【C++】,c++,c++


引用的語(yǔ)法

源變量的類型+&+別名=源變量名


函數(shù)重載和引用【C++】,c++,c++


引用的特點(diǎn)

  • 引用必須初始化

  • 一個(gè)變量可以有多個(gè)引用

    函數(shù)重載和引用【C++】,c++,c++

  • 引用一旦引用一個(gè)實(shí)體后就不能去引用其他實(shí)體了


如果直接=,就是賦值

函數(shù)重載和引用【C++】,c++,c++

函數(shù)重載和引用【C++】,c++,c++


引用的使用場(chǎng)景

引用可以做參數(shù),可以達(dá)到類似指針的效果


函數(shù)重載和引用【C++】,c++,c++
這樣設(shè)計(jì)Swap的參數(shù)的話,形參a,b就是實(shí)參a,c的引用,那么該a,b就是改a,c,改形參就是改實(shí)參


引用的底層實(shí)現(xiàn)

引用的底層【匯編層次】實(shí)現(xiàn)其實(shí)是和指針一樣的

都是開出一個(gè)指針大小的空間將引用(指向)的變量的地址放進(jìn)去

但是使用上卻不同,為什么呢?

其實(shí)是編譯器進(jìn)行了隱式的包裝,我們使用引用時(shí)使用到的就是那一層包裝

所以一般認(rèn)為:
引用語(yǔ)法上是不開空間的,引用和它引用的源變量共用一個(gè)空間

指針語(yǔ)法上是開空間的,將指向的對(duì)象的地址存入開出的空間


傳參時(shí)傳引用和傳值的效率

傳引用效率更高,因?yàn)橐玫讓訉?shí)現(xiàn)是和指針一樣的,開空間存地址

所以傳參時(shí),如果形參是引用,那么實(shí)參傳遞的其實(shí)是實(shí)參的地址


引用和指針的區(qū)別

  1. 引用概念上定義一個(gè)變量的別名,指針存儲(chǔ)一個(gè)變量地址。

  2. 引用在定義時(shí)必須初始化,指針沒有要求

  3. 引用在初始化時(shí)引用一個(gè)實(shí)體后,就不能再引用其他實(shí)體,而指針可以在任何時(shí)候指向任何一個(gè)同類型實(shí)體

  4. 有多級(jí)指針,但是沒有多級(jí)引用

  5. 沒有NULL引用,但有NULL指針

  6. 引用自加即引用的實(shí)體增加1,指針自加即指針向后偏移一個(gè)類型的大小

  7. 訪問實(shí)體方式不同,指針需要顯式解引用,引用編譯器自己處理文章來源地址http://www.zghlxwxcb.cn/news/detail-844537.html

到了這里,關(guān)于函數(shù)重載和引用【C++】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++核心編程——內(nèi)存分區(qū)、引用、函數(shù)提高和函數(shù)重載

    本專欄記錄C++學(xué)習(xí)過程包括C++基礎(chǔ)以及數(shù)據(jù)結(jié)構(gòu)和算法,其中第一部分計(jì)劃時(shí)間一個(gè)月,主要跟著黑馬視頻教程,學(xué)習(xí)路線如下, 不定時(shí)更新,歡迎關(guān)注 。 當(dāng)前章節(jié)處于: ---------第1階段-C++基礎(chǔ)入門 ---------第2階段實(shí)戰(zhàn)-通訊錄管理系統(tǒng), ==== 第3階段-C++核心編程 , --------

    2024年01月22日
    瀏覽(23)
  • 【C++修煉之路】C++入門(中)—— 函數(shù)重載和引用

    【C++修煉之路】C++入門(中)—— 函數(shù)重載和引用

    ??作者主頁(yè):@安 度 因 ??學(xué)習(xí)社區(qū):StackFrame ??專欄鏈接:C++修煉之路

    2024年02月02日
    瀏覽(22)
  • 【C++入門 三】學(xué)習(xí)C++缺省參數(shù) | 函數(shù)重載 | 引用

    【C++入門 三】學(xué)習(xí)C++缺省參數(shù) | 函數(shù)重載 | 引用

    缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。 ①全缺省參數(shù) ②半缺省參數(shù) 注意: 1. 半缺省參數(shù)必須從右往左依次來給出,不能間隔著給 2. 缺省參數(shù)不能在函數(shù)聲明和定義中

    2024年02月06日
    瀏覽(24)
  • 【C++那些事兒】函數(shù)重載與C++中的“指針“——引用

    【C++那些事兒】函數(shù)重載與C++中的“指針“——引用

    君兮_的個(gè)人主頁(yè) 即使走的再遠(yuǎn),也勿忘啟程時(shí)的初心 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,我之前看過一套書叫做《明朝那些事兒》,把本來枯燥的歷史講的生動(dòng)有趣。而C++作為一門接近底層的語(yǔ)言,無疑是抽象且難度頗深的。我希望能努力把抽象繁多的知識(shí)講的生

    2024年02月08日
    瀏覽(29)
  • 【C++起飛之路】初級(jí)——缺省參數(shù)、函數(shù)重載、引用

    【C++起飛之路】初級(jí)——缺省參數(shù)、函數(shù)重載、引用

    缺省參數(shù)是 聲明 或 定義 函數(shù)時(shí)為 函數(shù)的參數(shù)指定一個(gè)缺省值 。 在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。 缺省參數(shù)使用主要規(guī)則:調(diào)用時(shí)你只能從最后一個(gè)參數(shù)開始進(jìn)行省略,換句話說,如果你要省略一個(gè)參數(shù),你必須省略它后

    2024年02月04日
    瀏覽(22)
  • C++之入門之缺省參數(shù)&&函數(shù)重載&&引用

    C++之入門之缺省參數(shù)&&函數(shù)重載&&引用

    重新拿起曾經(jīng)尚未填的C++的坑,從現(xiàn)在我會(huì)繼續(xù)更新C++的相關(guān)內(nèi)容,希望各位能夠支持 缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí) 參則采用該形參的缺省值,否則使用指定的實(shí)參 (1)全缺省參數(shù) (2)半缺省參數(shù) (1)半

    2023年04月15日
    瀏覽(23)
  • C++心決之命名空間、重載函數(shù)和引用

    C++心決之命名空間、重載函數(shù)和引用

    目錄 1. C++(C++98) 2. 命名空間 2.1 命名空間定義 2.2 命名空間使用 3. C++輸入輸出 4. 缺省參數(shù) 4.1 缺省參數(shù)概念 4.2 缺省參數(shù)分類 5. 函數(shù)重載 5.1 函數(shù)重載概念 5.2 C++支持函數(shù)重載的原理--名字修飾(name Mangling) 6. 引用 6.1 引用概念 6.2 引用特性 6.3 常引用 6.4 使用場(chǎng)景 6.5 傳值、

    2024年04月17日
    瀏覽(26)
  • 【C++心愿便利店】No.2---函數(shù)重載、引用

    【C++心愿便利店】No.2---函數(shù)重載、引用

    ??個(gè)人主頁(yè):@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:函數(shù)重載、引用 記得 評(píng)論?? +點(diǎn)贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 自然語(yǔ)言中,一個(gè)詞可以有多重含義,人們可以通過

    2024年02月11日
    瀏覽(31)
  • 【C++心愿便利店】No.2---函數(shù)重載和引用

    【C++心愿便利店】No.2---函數(shù)重載和引用

    ??個(gè)人主頁(yè):@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:函數(shù)重載、引用 記得 評(píng)論?? +點(diǎn)贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 自然語(yǔ)言中,一個(gè)詞可以有多重含義,人們可以通過

    2024年02月11日
    瀏覽(20)
  • 【C++】C++入門第二課(函數(shù)重載 | 引用 | 內(nèi)聯(lián)函數(shù) | auto關(guān)鍵字 | 指針空值nullptr)

    【C++】C++入門第二課(函數(shù)重載 | 引用 | 內(nèi)聯(lián)函數(shù) | auto關(guān)鍵字 | 指針空值nullptr)

    目錄 前言 函數(shù)重載 概念 重載函數(shù)的條件 C++支持重載函數(shù)的原理--名字修飾 引用 概念 特性 常引用(const引用) 使用場(chǎng)景 傳值,傳引用效率比較 引用和指針的區(qū)別 內(nèi)聯(lián)函數(shù) 概念 特性 auto(C++11) auto簡(jiǎn)介 auto的使用規(guī)則 指針空值nullptr(C++11) C++98中的指針空值 結(jié)語(yǔ)

    2024年04月15日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包