class A; A func() { A a; return a; } 这个应该是错误用法吧?a在func结束后应该被destruct了 但为啥还经常见到这种用法?
i*M
2 楼
RT 谢谢了
J*o
3 楼
semantically speaking, the returned object is a copy of a so it doesnt matter a got destructed or not. the actual implementation may vary depends on compiler. most compilers utilize RVO/NRVO so the unnecessary copy is eliminated.
【在 g*********e 的大作中提到】 : class A; : A func() { : A a; : return a; : } : 这个应该是错误用法吧?a在func结束后应该被destruct了 : 但为啥还经常见到这种用法?