关于C++11右值引用-创新互联
C++11引入右值引用后查看了很多资料,但都过于啰嗦,不能一针见血,这里用最简单的方式阐述一下
成都创新互联于2013年成立,是专业互联网技术服务公司,拥有项目网站制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元获嘉做网站,已为上家服务,为获嘉各地企业和个人服务,联系电话:18982081108右值引用类型为 T&& 。如
T&& right_ref = ?
右边的 ?如果是右值就可以了。如果想用左值,就需要std::move(左值)
那么右值引用有什么用呢?答案是移动构造的参数用的是右值引用,比如
class A
{
public:
A(A&& other)
{}
}
上面这个构造函数就是移动构造函数。也就是当我们构造一个函数的时候。如果参数是右值引用。那么就会触发移动构造。移动构造就会掏空other(一般是指针之类的直接夺过来)。这样就会比拷贝构造高效了很多。也就是说std::move(左值)不会对左值有任何影响,只是为了让其作为参数来触发移动构造,在移动构造里才会对左值产生掏空的作用。
那么std::forward(?)是做什么的呢?
因为如果? 为 T&&时,是不会触发移动构造的,所以要经过std::forward(T&&)“完美转发”会才能触发移动构造
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章标题:关于C++11右值引用-创新互联
浏览路径:http://pwwzsj.com/article/cdchhd.html