是否还在这里复制:
std::vector<int> &f = foo();
Run Code Online (Sandbox Code Playgroud)
foo原型在哪里
std::vector<int> foo();
Run Code Online (Sandbox Code Playgroud)
foo()返回一个临时对象,该对象不能绑定到非const引用.
做其中一个:
//temporary can be bound to const-reference, so this is ok
const std::vector<int> &f = foo(); //no copy takes place.
//or save a copy of temporary
std::vector<int> f = foo(); //copy takes place (may be optimized by compiler)
Run Code Online (Sandbox Code Playgroud)
阅读上面的评论.在第二个版本(非参考版本)中,编译器可以优化返回值,避免复制临时.这也取决于实施情况foo().
看到这个: