Re: [問題] 為什麼函式可以傳出CLASS

作者: descent (「雄辯是銀,沉默是金」)   2016-06-20 18:58:39
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不是區域變數嗎?
: 生命週期應該再函式結束就消失不是嗎?
作者: testPtt (測試)   2016-06-20 19:52:00
不會幫你轉這個 會用call mov ret去湊
作者: Sex5F (HTC)   2016-06-21 00:00:00
我也不會...跪求大師...都是compiler-> printf ->修改
作者: suhorng ( )   2016-06-22 17:39:00
這樣轉好怪..

Links booklink

Contact Us: admin [ a t ] ucptt.com