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