一、C++中的函數(shù)重載:
1、函數(shù)重載的概念:
用同一個(gè)函數(shù)名定義不同的函數(shù)
當(dāng)函數(shù)名和不同的參數(shù)搭配時(shí)函數(shù)的含義不同
注意:在c語言中是沒有函數(shù)重載這個(gè)概念的。
代碼示例演示:
上面在c++編譯器里面編譯時(shí)沒有問題的,如果放在c語言編譯器里面編譯是會(huì)報(bào)錯(cuò)的:
所以說c語言里面不支持函數(shù)重載。
2、函數(shù)重載至少要滿足下面的一個(gè)條件:
參數(shù)個(gè)數(shù)不同
參數(shù)類型不同
參數(shù)順序不同
比如下面兩個(gè)函數(shù)可以構(gòu)造重載函數(shù)嗎?
答案肯定是可以構(gòu)造重載函數(shù)的,讀者可以自己試試(這個(gè)比較好理解)。
3、當(dāng)函數(shù)默認(rèn)參數(shù)遇上函數(shù)重載會(huì)發(fā)生什么?
例如下面的兩個(gè)函數(shù):
到底會(huì)發(fā)生啥,我們還是看下面這個(gè)實(shí)驗(yàn):
運(yùn)行結(jié)果:
從上面報(bào)錯(cuò)的結(jié)果里面有一個(gè)單詞ambiguous(意思是夢(mèng)棱兩可的),也就是說默認(rèn)參數(shù)這種使用時(shí)不允許的。
4、C++編譯器調(diào)用重載函數(shù)的準(zhǔn)則:
將所有同名函數(shù)作為候選者
嘗試尋找可行的候選函數(shù):
精確匹配實(shí)參
通過默認(rèn)參數(shù)能夠匹配實(shí)參
通過默認(rèn)類型轉(zhuǎn)換匹配實(shí)參
匹配失?。?/p>
最終尋找到的候選函數(shù)不唯一,則出現(xiàn)二義性,編譯失敗
無法匹配所有候選者,函數(shù)未定義編譯失敗
5、函數(shù)重載的注意事項(xiàng):
重載函數(shù)在本質(zhì)上是相互獨(dú)立的不同函數(shù)
重載函數(shù)的函數(shù)類型不同
函數(shù)返回值不能作為函數(shù)重載的依據(jù)
函數(shù)重載是由函數(shù)名和參數(shù)列表決定的
代碼測試:
運(yùn)行結(jié)果:
從輸出結(jié)果我們可以看出這兩個(gè)函數(shù)的入口地址不一樣,這表明這兩個(gè)函數(shù)是不同的函數(shù)。
6、小結(jié):
函數(shù)重載是c++中引入的概念
函數(shù)重載的本質(zhì)是相互獨(dú)立的不同函數(shù)
c++中通過函數(shù)名和函數(shù)參數(shù)確定函數(shù)調(diào)用
-
可編程邏輯
+關(guān)注
關(guān)注
7文章
526瀏覽量
44580 -
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74783
發(fā)布評(píng)論請(qǐng)先 登錄
基于LockAI視覺識(shí)別模塊:C++目標(biāo)檢測

Spire.XLS for C++組件說明

AKI跨語言調(diào)用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
運(yùn)動(dòng)控制卡周期上報(bào)實(shí)時(shí)數(shù)據(jù)IO狀態(tài)之C++篇

同樣是函數(shù),在C和C++中有什么區(qū)別
C++新手容易犯的十個(gè)編程錯(cuò)誤
探索字節(jié)隊(duì)列的魔法:多類型支持、函數(shù)重載與線程安全

傅里葉變換的數(shù)學(xué)原理
C7000優(yōu)化C/C++編譯器

OpenVINO2024 C++推理使用技巧
ModusToolbox 3.2在c代碼中包含c++代碼的正確步驟是什么?
C++語言基礎(chǔ)知識(shí)
C++中實(shí)現(xiàn)類似instanceof的方法

評(píng)論