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

C++中函數(shù)重載詳解

 更新時間:2022年02月07日 10:30:32   作者:Enthusiastic_boy  
大家好,本篇文章主要講的是C++中函數(shù)重載詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

函數(shù)重載的概念

函數(shù)重載:是函數(shù)的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名函數(shù),這些同名函數(shù)的 形參列表(參數(shù)個數(shù) 或 類型 或 順序)必須不同,常用來處理實現(xiàn)功能類似數(shù)據(jù)類型不同的問題。

函數(shù)重載的應(yīng)用

1.比如以下代碼,函數(shù)名一樣,而參數(shù)的類型不同,在調(diào)用的時候編譯器會根據(jù)傳遞的參數(shù)自動進(jìn)行匹配。

2.在例如以下代碼,我們進(jìn)行編譯,都可以編譯成功。

 3.接下來看一個有趣的現(xiàn)象,將上述第二個例子中的第一個函數(shù)的最后一個參數(shù)改為缺省參數(shù),此時調(diào)用f(1,2),編譯器直接報錯。其實這兩個函數(shù)在語法上是構(gòu)成重載的,但是當(dāng)調(diào)用時,只給了兩個參數(shù),我們知道缺省參數(shù)可以不給,那么此時編譯器就不知道調(diào)用哪個函數(shù)了,就出現(xiàn)了“調(diào)用不明確”的錯誤。

 為什么C++支持函數(shù)重載,而C語言不支持

在 C/C++ 中,一個程序要運(yùn)行起來,需要經(jīng)歷以下幾個階段: 預(yù)處理、編譯、匯編、鏈接。 1. 實際我們的項目通常是由多個頭文件和多個源文件構(gòu)成,而通過我們 C 語言階段學(xué)習(xí)的編譯鏈接,我們 可以知道,【當(dāng)前a.cpp 中調(diào)用了 b.cpp 中定義的 Add 函數(shù)時】,編譯后鏈接前, a.o 的目標(biāo)文件中沒有 Add的函數(shù)地址,因為 Add 是在 b.cpp 中定義的,所以 Add 的地址在 b.o 中。那么怎么辦呢? 2. 所以鏈接階段就是專門處理這種問題, 鏈接器看到 a.o 調(diào)用 Add ,但是沒有 Add 的地址,就會到 b.o 的符 號表中找 Add 的地址,然后鏈接到一起。 3. 那么鏈接時,面對 Add 函數(shù),連接器會使用哪個名字去找呢?這里每個編譯器都有自己的函數(shù)名修飾規(guī) 則。 4. 由于 Windows 下 vs 的修飾規(guī)則過于復(fù)雜,而 Linux 下 gcc 的修飾規(guī)則簡單易懂,下面我們使用了 gcc 演示了這個修飾后的名字。 5. 通過下面我們可以看出 gcc 的函數(shù)修飾后名字不變。而 g++ 的函數(shù)修飾后變成【 _Z+ 函數(shù)長度 + 函數(shù)名 + 型首字母】。

一、在Linux環(huán)境下采用C語言編譯器編譯后:函數(shù)名字的修飾沒有發(fā)生改變。

二、采用C++編譯器編譯后:函數(shù)名字的修飾發(fā)生改變,編譯器將函數(shù)參數(shù)類型信息添加到修改后的名字中。

通過這里就理解了 C 語言沒辦法支持重載,因為同名函數(shù)沒辦法區(qū)分。而 C++ 是通過函數(shù)修飾規(guī)則來區(qū) 分,只要參數(shù)不同,修飾出來的名字就不一樣,就支持了重載。

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

相關(guān)文章

  • C++ OpenCV實現(xiàn)像素畫的示例代碼

    C++ OpenCV實現(xiàn)像素畫的示例代碼

    這篇文章主要介紹了通過OpenCV進(jìn)行圖片像素的變化,從而形成像素畫效果的功能。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動手試一試
    2022-01-01
  • C++中發(fā)送HTTP請求的實現(xiàn)方式

    C++中發(fā)送HTTP請求的實現(xiàn)方式

    使用C++編程發(fā)送HTTP請求通常需要使用第三方的HTTP庫或框架,在C++中,有幾個受歡迎的HTTP庫可供選擇,例如Curl、Boost.Beast和cpp-httplib,另外,也可以自己實現(xiàn)socket來發(fā)送http請求,需要的朋友可以參考下
    2024-04-04
  • C語言實現(xiàn)成績統(tǒng)計示例

    C語言實現(xiàn)成績統(tǒng)計示例

    這篇文章主要介紹了C語言實現(xiàn)成績統(tǒng)計示例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言按關(guān)鍵字搜索文件夾中文件的方法

    C語言按關(guān)鍵字搜索文件夾中文件的方法

    這篇文章主要介紹了C語言按關(guān)鍵字搜索文件夾中文件的方法,涉及C語言文件操作及字符串查找的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 詳解C語言中return與exit的區(qū)別

    詳解C語言中return與exit的區(qū)別

    這篇文章主要介紹了詳解C語言中return與exit的區(qū)別的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C++實現(xiàn)二分法求連續(xù)一元函數(shù)根

    C++實現(xiàn)二分法求連續(xù)一元函數(shù)根

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)二分法求連續(xù)一元函數(shù)根,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++實現(xiàn)并行計算的兩種方式

    C++實現(xiàn)并行計算的兩種方式

    本文介紹了使用C++實現(xiàn)并行計算的兩種方式,包括OpenMP和MPI,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • Qt音視頻開發(fā)之利用ffmpeg實現(xiàn)倍速播放

    Qt音視頻開發(fā)之利用ffmpeg實現(xiàn)倍速播放

    這篇文章主要為大家詳細(xì)介紹了在Qt音視頻開發(fā)中如何利用ffmpeg實現(xiàn)倍速播放功能(半倍速/2倍速/4倍速/8倍速),感興趣的小伙伴可以了解一下
    2022-11-11
  • C++?OpenCV實現(xiàn)物體尺寸測量示例詳解

    C++?OpenCV實現(xiàn)物體尺寸測量示例詳解

    本文主要介紹了利用OpenCV對物體的尺寸進(jìn)行測量,即先定位到待測物體的位置,然后測量物體的寬高。感興趣的同學(xué)可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2022-01-01
  • 詳解C語言的exp()函數(shù)和ldexp()函數(shù)以及frexp()函數(shù)

    詳解C語言的exp()函數(shù)和ldexp()函數(shù)以及frexp()函數(shù)

    這篇文章主要介紹了詳解C語言的exp()函數(shù)和ldexp()函數(shù)以及frexp()函數(shù),注意這三個函數(shù)雖然看起來相似但實際功能卻大相徑庭!需要的朋友可以參考下
    2015-08-08

最新評論

黔西| 永丰县| 安远县| 垦利县| 吉木乃县| 恩施市| 嵩明县| 眉山市| 昌吉市| 西乌| 新民市| 浮山县| 灵石县| 福安市| 盐城市| 新乡县| 平乡县| 天峻县| 浦北县| 准格尔旗| 阿尔山市| 盐池县| 郎溪县| 西畴县| 石城县| 昆明市| 大厂| 杭州市| 洛扎县| 云浮市| 朝阳市| 诏安县| 中卫市| 东乌| 大庆市| 醴陵市| 廉江市| 富宁县| 凭祥市| 甘谷县| 互助|