默认移动构造函数的定义是什么?我想不出什么明智的。也许交换 ptr 成员并复制值/引用成员?
user34537
问问题
163 次
2 回答
2
这就是标准所说的(12.8/15):
非联合类 X 的隐式定义的复制/移动构造函数执行其基类和成员的成员复制/移动。[注意:非静态数据成员的大括号或等号初始化器被忽略。另见 12.6.2 中的示例。—尾注] 初始化的顺序与用户定义的构造函数中基和成员的初始化顺序相同(见 12.6.2)。让
x
是构造函数的参数,或者对于移动构造函数,是引用参数的 xvalue。每个基本或非静态数据成员都以适合其类型的方式复制/移动:— 如果成员是一个数组,则每个元素都直接使用 的相应子对象进行初始化
x
;— 如果一个成员
m
有右值引用类型T&&
,它直接用static_cast<T&&>(x.m)
;初始化— 否则,基数或成员直接用 的相应基数或成员初始化
x
。虚拟基类子对象只能由隐式定义的复制/移动构造函数初始化一次(见 12.6.2)。
对于指针和基本类型,移动与复制相同。
于 2013-09-11T12:12:21.163 回答
1
使用为每个成员类型定义的移动语义,非联合成员按其初始化顺序移动。
于 2013-09-11T05:40:16.213 回答