C 中自动生成移动操作
在 C 98 中,编译器可以自动为类生成复制构造函数和复制赋值运算符。然而,随着 C 11 中移动语义的引入,关于移动操作自动生成的问题出现了。
移动构造函数和移动赋值运算符会自动生成吗?
否,与复制构造函数和复制赋值运算符不同,编译器不会自动为具有用户定义构造函数或赋值的类生成移动操作
不自动生成移动操作的情况
如果满足以下条件,则不会自动生成移动操作:
确定自动生成 Move操作
要确定是否为类自动生成移动操作,请考虑以下事项:
弃用自动移动操作的生成
在 C 20 中,不推荐自动生成移动操作,如果该类声明析构函数或任何复制成员(复制构造函数、复制赋值运算符)。为了确保与 C 未来版本的兼容性,建议为需要它们的类显式声明移动操作。
以上是C 编译器何时自动生成移动构造函数和赋值运算符?的详细内容。更多信息请关注PHP中文网其他相关文章!