今天在思考一个很初学者的问题但竟然发现我观念整个有问题
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后才开始解构吗??
没有很清楚这边的观念 我自己是觉得不该这样阿
请各位帮我突破盲点...谢谢