在c++中,可以使用多種方式返回乙個變數(物件),比如直接返回乙個臨時物件、返回其引用、返回其指標。
配合不同的修飾符,又可能產生不同的效果。
下面我在visualstudio2013中測試了一下什麼樣的儲存方式是合法的,什麼樣的儲存方式是非法的。
為了防止編譯器優化影響結果,我在被呼叫的函式中使用了標準輸入而不是直接指定字串為乙個常量值。
測試程式:
#include #include using namespace std;
string f()
string& g()
const string& h()
int main()
system( "pause" );
return 0;
}
輸入:
11
1213
1415
1621
2223
2425
2631
3235
36
輸出:
11
1213
可以看出,返回區域性變數的引用無疑是錯誤的。
而返回的臨時物件將在其所在表示式結束後被銷毀,故不能使用指標。
但是使用拷貝構造或者引用是有效的。
C 函式返回值。
一 params.可變引數,無論有幾個引數,必須出現在引數列表的最後,可以為可變引數直接傳遞乙個對應型別的陣列。class program test msg intarry static void test string msg,params int args 二 ref 引用傳遞 三 out ou...
函式中的返回值
function fn n,m fn 代表函式本身 fn 10,20 實參 給形參傳遞的具體值 代表函式執行後返回的結果,函式執行的時候,都會形成乙個全新的私有作用域 私有棧記憶體 把原有堆記憶體中儲存的字串中變為js 表示式執行 保護裡面的私有變數不受外界的干擾 和外界是隔離的 我們吧函式執行的這...
C 中函式返回值的設計
今天生病了,歲的第一天居然發燒了,坐在辦公室也不想幹什麼活了 正好昨天同事問了我乙個關於函式返回值得問題,所以趁著會沒事將我對函式返回值的設計的理解記下來 在 中,函式的返回值大概分為這麼三種 內建型別,類型別,結構體等等。指標。引用。對於第一種,大家都很熟悉。在 中是按值傳遞各種引數,返回值的,所...