一、類中的函數重載:
1、函數重載的溫習:
函數重載的本質為相互獨立的不同函數
C++中通過函數名和函數參數確定函數調用
無法直接通過函數名得到函數重載函數的入口地址
函數重載必然發生在同一個作用域中
2、類中的成員函數可以進行重載:
構造函數的重載
普通成員函數的重載
靜態成員函數的重載
這里有一個問題:全局函數,普通成員函數以及靜態成員函數之間是否可以構成重載?
從上面回顧重載函數的知識中,我們要注意到一點函數重載必須發生在同一作用域里面(其他兩點問題不大),所以的構造函數和普通成員函數是可以構造重載的,而與全局函數是不可以構成重載的。
代碼測試:
輸出結果:
3、重載的意義:
通過函數名對函數功能進行提提示
通過參數列表對函數用法進行提示
擴展系統中已經存在的函數功能
這里用c語言里面的拷貝字符串函數strcpy來進行擴展演示:
代碼版本一:
輸出結果:
這里雖然結果是輸出多了,但是這個程序同時也報了段錯誤,因為buf所能存儲的能力小于s;所以為了解決這個問題,你肯定第一時間想到strncpy函數:
代碼版本二:
輸出結果:
這個函數就保護程序的安全性;但是我在c++里面既然學習了函數重載,那么久可以在原有的函數基礎上進行擴展:
代碼版本三:
輸出結果:
二、總結:
類的成員函數之間可以進行重載;
重載必須發生在同一個作用域中;
全局函數和成員函數不能構成重載關系;
重載的意義在于擴展已經存在的功能。
-
函數
+關注
關注
3文章
4365瀏覽量
63945 -
C++
+關注
關注
22文章
2116瀏覽量
74642
發布評論請先 登錄
AKI跨語言調用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
同樣是函數,在C和C++中有什么區別
ADS1299EEGFE-PDK在window上如何通過C++讀取8通道數據?
C++新手容易犯的十個編程錯誤
探索字節隊列的魔法:多類型支持、函數重載與線程安全

評論