首页 > 解决方案 > 有必要使用std::move吗?这不是已经是右值引用了吗?

问题描述

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

A myA(new B);

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

标签: c++

解决方案


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

推荐阅读