C 中隐式生成 Move 操作
在 C 11 标准的早期草案中,存在关于隐式生成 Move 的争论构造函数和赋值运算符。这是由于担心潜在的性能影响以及希望为程序员提供对这些操作的更多控制。
当前规范
当前规范 (N3225) 指出如果满足以下条件,移动构造函数和赋值运算符将被隐式声明为默认值:
解决问题
虽然默认行为随着时间的推移而发生变化,但有几种方法可以解决旧编译器中缺乏隐式移动操作的问题:
其他注意事项
需要注意的是,实现移动语义消除了对交换成员函数的需要。此外,移动构造函数和赋值运算符仅应在类管理其自己的资源(例如动态分配的内存)时使用。对于仅包含 POD 类型和 STL 容器的类,默认的复制语义通常就足够了。
以上是C 中如何隐式生成移动构造函数和赋值运算符?的详细内容。更多信息请关注PHP中文网其他相关文章!