c++ - 移动没有指针的构造函数

标签 c++ c++11

我知道这个问题可能看起来非常非常基础。但是我在任何地方都找不到带有没有指针的移动构造函数的示例。

我有一个包含 vector 对象变量的类。不是指向一个的指针。所以我的问题: 这是否意味着我不需要移动构造函数?还是我的实现有误,我应该使用指向 vector 的指针然后使用移动构造函数?

谢谢

最佳答案

如果您的类包含可移动对象(例如 vector ),则只需让编译器生成隐式移动操作即可。他们会做正确的事,移动每个子对象。

如果您自己处理指向动态对象或其他非托管资源句柄的原始指针,则只需要自己编写。最好的方法是使用一个正确的可复制/可移动对象(例如容器、智能指针或其他 RAII 类)来管理其中的每一个;那么通过组合这些构建的复杂对象将隐式具有正确的复制/移动语义。

(如评论中所述:如果您的类声明了自己的析构函数或复制操作,则它不会获得隐式移动操作;您需要定义自己的操作。但是如果您遵循上述建议,则编写它来自不需要任何特殊处理的正确管理类型,那么你不需要声明任何这些东西。)

关于c++ - 移动没有指针的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738843/

相关文章:

c++ - `int` 在 C++ 中默认是 `signed long int` 吗?

c++ - 需要澄清 C 风格、重新解释和 const 转换

c++11 从传递给构造函数的 lambda 访问 "this"

c++ - Boost ASIO 阻塞回调

c++ - 必须调用对非静态成员函数的引用

c++ - vs2008 c++用键盘拖动调试器的箭头

c++ - 如果使用返回引用的函数初始化 'auto' var,为什么它不声明引用类型?

具有私有(private)初始化的 C++ 构造函数

c++ - 具有必须返回派生类的基类 vector 的类的下标运算符重载

c++ - 委托(delegate)构造函数抛出时是否会自动回收内存?