c++ - 我应该在非引用构造函数参数上手动调用 move 吗?

标签 c++ c++11 move-semantics

给定这个构造函数:

MyClass::MyClass(SomeOtherClass other)
    : myOther(other)
{
}

我应该在初始化列表中手动调用 std::move,还是编译器会足够聪明自动执行此操作?

最佳答案

必须调用它。编译器无法知道您以后是否仍想“使用”该对象(无论如何这将是一个非常令人困惑的语言规则)。所以说 : myOther(std::move(other))

关于c++ - 我应该在非引用构造函数参数上手动调用 move 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18576453/

相关文章:

C++:结构/类中的构造函数与初始化列表

c++ - 使用 Boost.Log 和 Boost.ASIO 导致崩溃

C++ move 语义——它究竟要实现什么?

c++ type trait to say "trivially movable"- 例子

c++ - 如何让库编译它的头文件

c++ - 信号 returnPressed() 和 editingFinished() 不适用于 QLineEdit

c++ - 使用 constexpr 初始化数组?

c++ - 如何使用 C++11 std::move 语义。我尝试编写代码,得到的输出有些不同

c++ - 在破坏的对象上 move 构造函数?

c++ - 在C++中,有没有一种实用的方法来限制一个函数对某个函数的调用?