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

請問ADC器件的interface中有分為Parallel lvds和serial lvds,請問這兩者有什么區(qū)別?
C++新手容易犯的十個編程錯誤
C7000 C/C++優(yōu)化指南用戶手冊

AIC3254的miniDSP編寫代碼和編寫C5502代碼有什么區(qū)別?
TMS320C6000優(yōu)化C/C++編譯器v8.3.x

TMS320C28x優(yōu)化C/C++編譯器v22.6.0.LTS

C7000優(yōu)化C/C++編譯器

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

評論