我知道这个问题可能看起来非常非常基础。但是我在任何地方都找不到带有没有指针的移动构造函数的示例。
我有一个包含 vector 对象变量的类。不是指向一个的指针。所以我的问题: 这是否意味着我不需要移动构造函数?还是我的实现有误,我应该使用指向 vector 的指针然后使用移动构造函数?
谢谢
最佳答案
如果您的类包含可移动对象(例如 vector ),则只需让编译器生成隐式移动操作即可。他们会做正确的事,移动每个子对象。
如果您自己处理指向动态对象或其他非托管资源句柄的原始指针,则只需要自己编写。最好的方法是使用一个正确的可复制/可移动对象(例如容器、智能指针或其他 RAII 类)来管理其中的每一个;那么通过组合这些构建的复杂对象将隐式具有正确的复制/移动语义。
(如评论中所述:如果您的类声明了自己的析构函数或复制操作,则它不会获得隐式移动操作;您需要定义自己的操作。但是如果您遵循上述建议,则编写它来自不需要任何特殊处理的正确管理类型,那么你不需要声明任何这些东西。)
关于c++ - 移动没有指针的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738843/