通用和转发引用:全面解释
在 C 语言中,程序员经常使用引用将数据传递给函数。将函数参数定义为右值引用时(例如,void f(int && i)),函数参数将绑定到右值引用。相反,声明为 T && 的模板函数参数t 可以绑定到右值或左值引用。
这两种参数类型引发了讨论,一些人将后者称为“通用引用”,另一些人将其称为“转发引用”。
通用引用与转发引用
术语“通用引用”最初是由 Scott Meyers 创造,用于描述对 cv 不合格模板参数的右值引用将自身推断为值或左值引用的能力。然而,C 17 引入了一个新术语:“转发引用”。
根据 C 标准,“转发引用”被定义为对 cv 不合格模板参数的右值引用。当函数参数为左值时,类型“对 A 的左值引用”用于类型推导。
因此,通用引用和转发引用是同义词,目前 C 标准中首选术语是“转发”引用。”
转发引用和 std::forward()
函数std::forward() 将其参数转发给另一个函数或函数对象。它通常用于保留参数的类型,特别是当参数是通用引用时。然而,使用 std::forward() 并不是参数被视为转发引用的必要条件。
结论
转发引用提供了一种灵活的处理方式函数参数。它们可以绑定到右值或左值引用,为代码开发提供便利和灵活性。了解转发引用和通用引用之间的区别对于编写高效且可维护的 C 代码至关重要。
以上是C 中的通用引用和转发引用有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!