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