作者descent (「雄辯是銀,沉默是金」)
看板C_and_CPP
標題Re: [問題] 為什麼函式可以傳出CLASS
時間Mon Jun 20 18:58:39 2016
compiler 大概會轉成這樣:
void fun(String *s)
{
String str="abc";
*s = str;
}
void main()
{
String strM;
fun(&strM);
}
有點像 return value optimization
補充了一篇 blog
http://goo.gl/HTYNaj
※ 引述《ducksky (鴨舞九天)》之銘言:
: String fun()
: {
: String str="abc";
: return str;
: }
: main
: {
: String strM=fun();
: }
: 請問上面的作法為何可行?
: 在fun()內的str不是區域變數嗎?
: 生命週期應該再函式結束就消失不是嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.177.194
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1466420322.A.98D.html
→ testPtt: 不會幫你轉這個 會用call mov ret去湊 06/20 19:52
→ Sex5F: 我也不會...跪求大師...都是compiler-> printf ->修改 06/21 00:00
推 suhorng: 這樣轉好怪.. 06/22 17:39
※ 編輯: descent (175.98.177.130), 06/23/2016 19:47:25