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