将返回类型分配给引用,是否进行复制?

pin*_*ngu 1 c++ reference

是否还在这里复制:

std::vector<int> &f = foo();
Run Code Online (Sandbox Code Playgroud)

foo原型在哪里

std::vector<int> foo();
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 8

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().

看到这个: