同樣是函數,在 C 和 C++ 中有什么區別?
第一個返回值。
C語言的函數可以不寫返回值類型,編譯器會默認為返回 int。
但是 C++ 的函數,除了構造和析構這兩個特殊的函數,必須得寫上返回值,即使沒有數據返回,也得寫 void。
第二個函數名。
C語言的函數名絕對不能重名,除了用上 weak 這樣的黑科技。同一個項目中,函數重名就會提示重復定義。
C++因為函數重載的存在,函數名可以相同,只要參數有區別就行。這兩個函數構成重載的關系。
第三個函數參數。
C++中的函數參數花樣比較多。
比如C++支持占位參數,參數可以只寫個類型,但是沒有名字,調用函數的時候,必須得給占位參數傳參。
C語言原來不支持占位參數,不過就在最新的 C23 里面,也加入了占位參數,使用新一點的編譯器,編譯也能通過。
除了占位參數,還有默認參數,這個功能比占位參數更實用。
所謂默認參數,就是可以給函數參數提供一個默認值,調用函數的時候,如果沒有提供實參,就會使用默認參數。
默認參數真的是個好東西。
第四個,函數模板。
這個概念也是只有C++才有。
對于函數體一樣,只有類型不一樣的函數,C++引入了模板機制,一個函數,可以用于多個場景。
第五個,函數指針。
C語言和C++都有函數指針的概念,只是 C++ 不僅有函數指針,還有函數對象。
這是兩個完全不同的概念,一個是指針,一個是被重載過函數調用運算符的類。
在算法里面,都可以用來指定規則。
相比C語言的函數,C++要復雜很多。還有哪些區別,歡迎大家在評論區交流。
-
函數
+關注
關注
3文章
4331瀏覽量
62609 -
C++
+關注
關注
22文章
2108瀏覽量
73646
原文標題:同樣是函數,在C和C++中有什么區別
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論