欢迎光临散文网 会员登陆 & 注册

std::ref

2023-07-08 22:49 作者:追逐彗星的尾巴  | 我要投稿

std::ref是一个模板函数,它用于将一个对象封装成一个引用包装器,以便可以按引用方式传递该对象,而不是按值传递。std::ref创建的包装器可以通过std::reference_wrapper类型进行访问,并以引用的方式传递给函数或模板。std::reference_wrapper类型提供了一个成员函数get,用于获取被引用对象的引用。

Case

可以省略std::ref,也可以用auto代替std::reference_wrapper<int>。

std::ref和传引用符号(&)的差异

I.作用范围:使用传引用符号时,引用只在声明的作用域内有效。而std::ref创建的引用包装器可以在更广泛的范围内传递和使用,包括函数间传递、存储在容器中等。

II.传递方式:使用传引用符号时,传递的是对象的引用。而std::ref创建的引用包装器本身是一个对象,可以像普通对象一样进行复制、赋值和传递。这对于需要将引用作为参数传递给函数或存储在容器中的情况非常有用。

III.可空性:std::ref创建的引用包装器是可空的,即可以通过赋值为空来表示没有引用的情况。而使用传引用符号时,引用是非空的,必须始终引用一个有效的对象。

std::cref

std::crefstd::ref一样,只是std::cref创建的包装器中包装的是对常量对象的引用。

std::ref的评论 (共 条)

分享到微博请遵守国家法律