[問題] 建構解構的初學者問題
今天在思考一個很初學者的問題但竟然發現我觀念整個有問題
http://ideone.com/weYKZC
很簡單的我想知道一個function call return by value回來
我如果用const & 去接 我觀念上會覺得
如果我不去注意function的return type(如果是by value)
我很有可能拿到一個dangling reference而不自覺
問題是上面的程式碼 解構的時機竟然是main結束(我預期是跳離get就解構)
我誤會什麼了嗎....
第二個問題是
我觀念上 function return by value的話 是rvalue 所以我不能用 non-const&去接
但我如果用Foo& , 是可以接的...答案也跟const&沒有差異
請問這是為什麼? 觀念又錯了嗎 如果有move constructor
Foo(get()); 確實會是走Foo(Foo&&)沒錯阿 rvalue....
可能有RVO介入所以我用local變數去return
但他還是會拿到奇怪的temp varaible的address
所以說 一個function的return value 他的scope不是function return後開始解構而是
更上一層function return後才開始解構嗎??
沒有很清楚這邊的觀念 我自己是覺得不該這樣阿
請各位幫我突破盲點...謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.202.250
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480608103.A.A4B.html
→
12/02 00:21, , 1F
12/02 00:21, 1F
→
12/02 00:23, , 2F
12/02 00:23, 2F
→
12/02 00:29, , 3F
12/02 00:29, 3F
→
12/02 00:32, , 4F
12/02 00:32, 4F
→
12/02 00:35, , 5F
12/02 00:35, 5F
→
12/02 00:35, , 6F
12/02 00:35, 6F