请考虑以下事项:
template <class T>
struct myclass
{
using value_type = T;
constexpr myclass() = default;
constexpr myclass(const myclass& other) = default;
constexpr myclass(const myclass&& other) = default;
T value;
};
myclass<int> x;
是否0
初始化整数?myclass<std::vector<int>> x;
默认移动构造函数的作用是什么?它是否称为向量的移动构造函数?答案 0 :(得分:5)
它们不等同于任何函数体。三种情况之间存在微小但显着的差异:= default
,允许隐式生成,以及最近的等效函数体。
以下链接更详细地解释:
我无法找到关于复制构造函数的良好链接;但是,其他两个链接中提到的类似注意事项将适用。
myclass<int> x;
未将value
设置为0
。
默认的move-constructor(如果你使它成为非const引用)移动每个可移动成员(虽然我认为有一个特殊情况,如果有一个不可移动的基类,奇怪的事情发生......)