具有返回值的函式之作為

2021-12-30 03:52:21 字數 1446 閱讀 7847

一、原理

關於函式的返回值,先說下 return 語句,return 語句結束當前正在執行的函式,並將控制權返回給呼叫此函式的函式。有兩種形式:

1.return; //不帶返回值的函式中(void)

不帶返回值的 return 語句只能用於返回型別為 void 的函式。但是注意:在返回型別為void的函式中,return 語句也不是必須的,隱式的 return 發生在函式的最後乙個語句完成時。

一般情況下,返回型別為 void 的函式使用 return 語句是為了引起函式的強制結束(類似於迴圈結構中的break語句)。

2.return expression: //帶返回值的函式中(非void)

此情況下,返回值的型別必須和函式的返回型別相同,或者能隱式轉化為函式的返回型別。

函式的返回值:用於初始化在呼叫函式出建立的臨時物件(temporary object)。

對於具有返回值的函式,在函式呼叫時(如求解表示式),需要乙個地方儲存器運算結果,此時編譯器會建立乙個沒有命名的物件-----臨時物件。

如:[cpp] 

... 

int add(int a, int b) 

.... 

int a = 1; 

int b = 2; 

int c = add(a, b); //create temporary, delete it after executing this statement  

... 

...int add(int a, int b)

....

int a = 1;

int b = 2;

int c = add(a, b); //create temporary, delete it after executing this statement

...上面的**中,在 int c = add (a, b);時,發生了如下事情:

首先:建立了乙個臨時物件,如temp。

然後:將函式的返回值 a+ b 的副本 複製給 temp;

最後:將temp 的副本複製給 變數 c,並刪除臨時變數 temp

注:在英語中,c++ 程式設計師通常用temporary 這個術語來代替 temporary object。

二、例子

為了更清晰地看到具有具有返回值函式之作為,下面以乙個類的運**況說明:

[cpp] 

#include   

using namespace std; 

class a 

a& operator=(const a& a) 

~a() 

}; int main() 

#include

using namespace std;

class a

a& operator=(const a& a)

~a()

int main()

輸出結果:

函式作為返回值

就像常見的函式一樣,lambda 表示式可以返回乙個函式指標 委託例項 這就意味著我們能夠使用乙個 lambda 表示式來建立並返回另乙個 lambda 表示式。這種行為在很多場景下都是非常有用的。我們先來看下面這個例子 1 func saymyname string language 2 10ca...

NotesDocument 作為函式返回值的問題

some code set my doc with the return value from the function.set recipientdoc getdocinnab search string if not recipientdoc is nothing then in debug i...

指標作為函式返回值

c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 include include char strlong char str1,char str2 else int main 執行結果 c language ...