【发布时间】:2012-01-07 04:31:52
【问题描述】:
我有一个很大的班级,里面有很多 STL 容器。
编译器会自动创建一个移动构造函数,将这些容器移动到目标,还是我必须自己创建?
【问题讨论】:
标签: c++ c++11 move-constructor
我有一个很大的班级,里面有很多 STL 容器。
编译器会自动创建一个移动构造函数,将这些容器移动到目标,还是我必须自己创建?
【问题讨论】:
标签: c++ c++11 move-constructor
X 类的移动构造函数在何时被隐式声明为默认值
- X 没有用户声明的复制构造函数,
- X 没有用户声明的复制赋值运算符,
- X 没有用户声明的移动赋值运算符,
- X 没有用户声明的析构函数,并且
- 移动构造函数不会被隐式定义为已删除。
例如,如果你的类有一个没有移动构造函数的类类型数据成员,即使它没有声明任何复制/移动构造函数,你的类也不会得到移动构造函数,因为隐式声明move 构造函数将被定义为已删除(因为该数据成员)。
【讨论】:
默认移动构造函数通常与默认复制构造函数绑定。当你得到另一个时,你得到一个。但是,如果您编写复制构造函数/赋值运算符,则不会编写默认的复制 和 移动构造函数/赋值运算符。如果你写其中任何一组,你必须把它们都写出来。
【讨论】: