C++ - 为包含字符串的类移动构造函数

标签 c++

class Foo { int a; int b; int c; std::wstring d; std::vector<char*> e };

假设 std::vector 有一个大字符串(~512 字节)和~512 字节,它的用例如下:

void Test()
{
    Foo foo;
    DoSomething(std::move(foo)); // DoSomething will stuff it in a long-lived queue
}

本质上,我希望 RAII 的对象的生命周期发生变化。

这是我实现移动构造函数和赋值运算符的时候吗?或者只是执行 std::move(..) 就足够了?

最佳答案

std::move 在没有移动构造函数和/或移动赋值运算符的情况下是无用的。

然而,您的类的所有成员都是可移动的,并且您没有任何用户定义的析构函数、复制构造函数或复制赋值运算符,因此将有一个隐式定义的移动构造函数和移动赋值运算符来做正确的事情。

因此在这种特定情况下,答案是您不需要定义移动构造函数或赋值运算符。

关于C++ - 为包含字符串的类移动构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866018/

相关文章:

c++ - 用于存储指针的线程安全循环缓冲区

c++ - 可以将两个(或更多)jpeg2000 组合成一个更大的而不将它们解码为位图吗?

使用 g++ 支持 C++0x IDE

c++ - 错误 : request for member which is of non class type

c++ - boost asio 在线程中运行 io_service

c++ - 是否有跨平台的方法来列出可用的串行端口?

c++ - OpenCV.norm 断言错误

c++ - 3D/FPS 相机问题 - SDL2

c++ - OpenCV 4.3.0 在 GPU 上计算积分图像>

c++ - 在安装期间检索产品版本的功能