一、類中的函數重載:
1、函數重載的溫習:
函數重載的本質為相互獨立的不同函數
C++中通過函數名和函數參數確定函數調用
無法直接通過函數名得到函數重載函數的入口地址
函數重載必然發生在同一個作用域中
2、類中的成員函數可以進行重載:
構造函數的重載
普通成員函數的重載
靜態成員函數的重載
這里有一個問題:全局函數,普通成員函數以及靜態成員函數之間是否可以構成重載?
從上面回顧重載函數的知識中,我們要注意到一點函數重載必須發生在同一作用域里面(其他兩點問題不大),所以的構造函數和普通成員函數是可以構造重載的,而與全局函數是不可以構成重載的。
代碼測試:
輸出結果:
3、重載的意義:
通過函數名對函數功能進行提提示
通過參數列表對函數用法進行提示
擴展系統中已經存在的函數功能
這里用c語言里面的拷貝字符串函數strcpy來進行擴展演示:
代碼版本一:
輸出結果:
這里雖然結果是輸出多了,但是這個程序同時也報了段錯誤,因為buf所能存儲的能力小于s;所以為了解決這個問題,你肯定第一時間想到strncpy函數:
代碼版本二:
輸出結果:
這個函數就保護程序的安全性;但是我在c++里面既然學習了函數重載,那么久可以在原有的函數基礎上進行擴展:
代碼版本三:
輸出結果:
二、總結:
類的成員函數之間可以進行重載;
重載必須發生在同一個作用域中;
全局函數和成員函數不能構成重載關系;
重載的意義在于擴展已經存在的功能。
審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
相關推薦
,即使沒有數據返回,也得寫 void。 第二個函數名。 C語言的函數名絕對不能重名,除了用上 weak 這樣的黑科技。同一個項目中,函數重名就會提示重復定義。
發表于 11-29 10:25
?274次閱讀
簡單的總結一下?C++ 新手容易犯的一些編程錯誤,給新人們提供一個參考。 1 有些關鍵字在 cpp 文件中多寫了 對于 C++ 類,一些關鍵字只要寫在 .h 中就好,cpp 中就不用再
發表于 11-15 12:42
?316次閱讀
探索字節隊列的魔法:多類型支持、函數重載與線程安全代碼難度指數:文章學習重點:參數宏的使用技巧一、引言在嵌入式系統和實時應用中,數據的傳輸和處理是至關重要的。字節隊列(ByteQueu
發表于 11-15 01:08
?787次閱讀
同樣是結構體,看看在C語言和C++中有什么區別?
發表于 10-30 15:11
?199次閱讀
電子發燒友網站提供《C7000優化C/C++編譯器.pdf》資料免費下載
發表于 10-30 09:45
?0次下載
ostream 是 C++ 標準庫中一個非常重要的類,它位于 頭文件中(實際上,更常見的是通過包含 頭文件來間接包含 ,因為 包含了 和 )。 ostream 類及其派生類(如 std::cout
發表于 09-20 15:11
?681次閱讀
使用 ModusToolbox 3.2
我有一個用純 C 語言編寫的 XMC4700 項目。 我正在嘗試添加一些 C++ 函數,并將其合并到我的原始代碼中。
我可以構建獨立的 .cpp
發表于 07-23 08:21
函數,可實際上C++中沒有。但是別著急,其實C++中有兩種簡單的方法可以實現類似Java中的instanceof的功能。 在
發表于 07-18 10:16
?574次閱讀
我使用的是 FX2 CY7C68013A 芯片。 我知道 CyUSB.NET 庫中有我需要的 LoadEEPROM 函數。 請問如何在 C++ 環境而不是 C#/CLR 環境中使用該
發表于 05-31 06:59
用arm-xxx-gcc編譯器進行編譯,*.cpp文件會使用arm-xxx-g++編譯器進行編譯,STM32CubeMX生成文件都是*.c源文件,在不修改文件名后綴情況下,我現在是想在*.c源文件中使用c++特性(比如
發表于 04-25 06:15
使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平
發表于 04-14 11:43
?2596次閱讀
在前兩篇博客中,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客中,我們將仔細研究以 C++
發表于 03-28 13:53
?787次閱讀
操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門語言。 C++: C++是在
發表于 02-05 14:11
?2370次閱讀
的 MISRA C++:2023 博客系列的第二部分。
在這篇博客中,我們將深入探討 C++ 的歷史、編程語言多年來的發展歷程以及它的下一步發展方向。
發表于 01-11 09:00
?582次閱讀
在掌握了基于 TCP 的套接字通信流程之后,為了方便使用,提高編碼效率,可以對通信操作進行封裝,本著有淺入深的原則,先基于 C 語言進行面向過程的函數封裝,然后再基于 C++ 進行面向對象的類封裝。
發表于 12-26 09:57
?1332次閱讀
評論