C 中的移动操作生成
在 C 98 中,为没有自定义定义的类自动生成复制构造函数和赋值运算符。然而,随着 C 11 中移动语义的引入,移动操作的生成需要进一步考虑。
自动生成移动操作
移动构造函数和移动赋值运算符仅在满足某些条件时自动生成:
自动生成的例外
在某些情况下,不会自动生成移动操作,即使满足上述条件。例如:
其他信息
来自 ACCU 的 Howard Hinnant 演示2014年会议提供了一个综合表格,总结了自动生成特殊成员的规则,包括移动操作。幻灯片突出显示,已弃用的行为由红色方块表示。
为了确保正确处理移动语义,建议遵循 C 98/03 中的“3 规则”。这意味着如果声明了析构函数,则显式声明两个复制成员,或者声明至少一个复制成员。
以上是C 中何时自动生成移动构造函数和移动赋值运算符?的详细内容。更多信息请关注PHP中文网其他相关文章!