一、C++中的函數重載:
1、函數重載的概念:
用同一個函數名定義不同的函數
當函數名和不同的參數搭配時函數的含義不同
注意:在c語言中是沒有函數重載這個概念的。
代碼示例演示:
上面在c++編譯器里面編譯時沒有問題的,如果放在c語言編譯器里面編譯是會報錯的:
所以說c語言里面不支持函數重載。
2、函數重載至少要滿足下面的一個條件:
參數個數不同
參數類型不同
參數順序不同
比如下面兩個函數可以構造重載函數嗎?
答案肯定是可以構造重載函數的,讀者可以自己試試(這個比較好理解)。
3、當函數默認參數遇上函數重載會發生什么?
例如下面的兩個函數:
到底會發生啥,我們還是看下面這個實驗:
運行結果:
從上面報錯的結果里面有一個單詞ambiguous(意思是夢棱兩可的),也就是說默認參數這種使用時不允許的。
4、C++編譯器調用重載函數的準則:
將所有同名函數作為候選者
嘗試尋找可行的候選函數:
精確匹配實參
通過默認參數能夠匹配實參
通過默認類型轉換匹配實參
匹配失敗:
最終尋找到的候選函數不唯一,則出現二義性,編譯失敗
無法匹配所有候選者,函數未定義編譯失敗
5、函數重載的注意事項:
重載函數在本質上是相互獨立的不同函數
重載函數的函數類型不同
函數返回值不能作為函數重載的依據
函數重載是由函數名和參數列表決定的
代碼測試:
運行結果:
從輸出結果我們可以看出這兩個函數的入口地址不一樣,這表明這兩個函數是不同的函數。
6、小結:
函數重載是c++中引入的概念
函數重載的本質是相互獨立的不同函數
c++中通過函數名和函數參數確定函數調用
-
可編程邏輯
+關注
關注
7文章
526瀏覽量
45401 -
C++
+關注
關注
22文章
2123瀏覽量
77110
發布評論請先 登錄
keil實現c與c++混合編程
重載型編碼器:工業巨擘的“智慧之眼”
C語言與C++的區別及聯系
Amphenol ARB Series? 矩形重載連接器:工業應用的理想之選
C語言和C++之間的區別是什么
C++程序異常的處理機制
激活函數ReLU的理解與總結
C/C++代碼靜態測試工具Perforce QAC 2025.3的新特性
技能+1!如何在樹莓派上使用C++控制GPIO?
基于LockAI視覺識別模塊:C++目標檢測
主流的 MCU 開發語言為什么是 C 而不是 C++?
C++之重載函數學習總結
評論