我试图理解C++ 11 rvalue引用以及如何在我的代码中使用它们以获得最佳性能.
假设我们有一个类A,它有一个指向大量动态分配数据的成员指针.
此外,一种foo(const A& a)与类对象做某事的方法A.
我希望防止在将A对象A传递给函数时调用复制构造函数foo,因为在这种情况下它将执行底层堆数据的深层复制.
我测试了传递左值参考:
A a;
foo(a);
Run Code Online (Sandbox Code Playgroud)
并传递右值引用:
foo(A());
Run Code Online (Sandbox Code Playgroud)
在这两种情况下都没有调用复制构造函数.
这是预期的还是由于我的编译器(Apple LLVM 5.1)的一些优化?这有什么说明吗?