C++基礎系列の函數
- 2020 年 1 月 14 日
- 筆記
C++基礎系列の函數
前幾天我們講了一下C++中的函數,不過還有一部分沒有講完,今天我們繼續討論一下。如果你沒有看過那篇文章,可以點擊右邊的鏈接前往:C++の函數
返回值
上一篇文章我們主要說了函數的參數列表,那麼函數除了有參數列表外,還有另一個要素,返回值。如果有返回值的話,又返回我們想要返回的數據,如果沒有的話就用void。這個跟C中一樣,沒什麼需要強調的,那麼有的的朋友可能會想到我們之前介紹過引用和指針了,它們可以作為函數的返回值嗎?
這裡需要做個區分,如果引用或者指針在函數體外,也就是說不是這個函數的局部變數的話,它們是可以作為返回值的,但是如果引用或指針是在這個函數中定義的話,也就是局部變數的話,就不能作為函數的返回值。
原因很簡單,因為函數作為最小的執行單元,在執行完後會被釋放掉,函數中所有申請的非靜態資源均要被釋放,如果這個引用或指針作為返回值的話,是不能將值傳出來的。
函數重載
如果朋友們有面向對象編程經驗的話,那麼一定聽說過函數重載這個概念,這個在java中叫方法重載,其實本質上是一樣的。所謂函數重載,就是可以在同一個源文件中定義多個函數名相同的函數,但是它們需要有不同的參數列表。我們看一下下面的程式碼:
void print(const char *cp); void print(const int *beg, const int *end); void print(const int ia[], size_t size);
可以看到上面有三個print函數,但是它們的參數列表不同,程式碼在調用函數時,編譯器可以根據參數列表推斷出我們想要調用的函數。
今天的函數部分就到這裡,明天我們繼續討論剩下兩個比較重要的概念「內聯函數」和「函數指針」。