不能返回區域性變數的引用

2021-09-30 10:34:52 字數 303 閱讀 3521

源之:

int add1(int a, int b)

int& add2(int a, int b)

請問這兩個函式返回有什麼區別,是乙個返回副本,另乙個直接返回嗎?

呼叫函式add2有什麼危險嗎?

add1的確返回了乙個副本,如果sum是自定義的類型別,可以很明顯看出拷貝建構函式在返回時被呼叫,對於內建型別沒什麼開銷。

add2返回了乙個區域性變數的位址,這當然是有問題的,sum在棧上的,在add2函式退出後sum變數就消失了,不知道這樣的解釋是否正確。

不能返回區域性物件的引用。

千萬不能返回區域性變數的引用??

c primer第7章函式一節,講到返回時,理解返回引用至關重要的是,千萬不能返回區域性變數的引用 意思是返回程式內部定義的變數時可能會出問題,因為當函式執行完畢後,將釋放分配給區域性物件的儲存空間。此時,對區域性物件的引用就會指向不確定的記憶體。覺得不能理解。比如求階乘時,可以使用迭代函式的方法,...

引用與區域性變數的返回問題

今天剛相對徹底的搞懂函式返回區域性普通變數 不包括指標和引用 與區域性指標 引用的返回區別,先看下面 include include using namespace std string version1 const string s1,const string s2 const string ve...

引用與區域性變數的返回問題

今天剛相對徹底的搞懂函式返回區域性普通變數 不包括指標和引用 與區域性指標 引用的返回區別,先看下面 include include using namespace std string version1 const string s1,const string s2 const string ve...