是否有必要使用std :: move?这不是已经是右值引用了吗?

时间:2018-09-22 21:59:04

标签: c++

class A
{
    B* ptr;
    A(B* ptr_) : ptr(std::move(ptr_))
    {}
};

A myA(new B);

在此代码中,是否有必要在ptr_上调用std :: move?还不是右值引用吗?

1 个答案:

答案 0 :(得分:4)

  1. ptr_不是右值引用,因为它是一个命名变量
  2. 不需要std::move,但这不是因为它是右值,而是因为移动和复制普通指针是完全相同的操作(std::move(ptr_) 会清除{ {1}})