小编Sve*_*ven的帖子

将rvalue引用传递给const lvalue reference paremeter

我试图理解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)的一些优化?这有什么说明吗?

c++ rvalue lvalue const-reference c++11

6
推荐指数
1
解决办法
6115
查看次数

标签 统计

c++ ×1

c++11 ×1

const-reference ×1

lvalue ×1

rvalue ×1