当前位置: 首页 > news >正文

重庆专业网站建设公司排名石家庄seo网站排名

重庆专业网站建设公司排名,石家庄seo网站排名,邯郸网站改版找谁做,做图网站有哪些东西万能引用是一种可以同时接受左值或右值的引用,它的形式是T&&,其中T是一个模板参数。万能引用不是C的一个新特性,而是利用了模板类型推导和引用折叠的规则来实现的功能。 模板类型推导 模板类型推导是指在调用一个模板函数时&#x…

万能引用是一种可以同时接受左值或右值的引用,它的形式是T&&,其中T是一个模板参数。万能引用不是C++的一个新特性,而是利用了模板类型推导引用折叠的规则来实现的功能。

模板类型推导

模板类型推导是指在调用一个模板函数时,编译器会根据传入的实参来推导出模板参数的类型。例如:

template<class T>
void f(T t) {}int x = 10; // x 是左值
f(x); // 调用f时,T被推导为int(注意而不是int&)
f(20); // 调用f时,T被推导为int

之所以调用f(x)时,T被推导为int,这是因为如果实参是一个左值,那么它会被当作一个右值来处理,除非模板参数的形式是T&或者T&&。例如:

template<class T>
void h(T t) {}template<class T>
void i(T& t) {}template<class T>
void j(T&& t) {}int x = 10; // x 是左值
h(x); // 调用h时,T被推导为int
i(x); // 调用i时,T被推导为int
j(x); // 调用j时,T被推导为int&

你可以看到,在调用h和i时,T都被推导为int,而在调用j时,T才被推导为int&。这是因为在j的模板参数中使用了&&符号,这样就触发了万能引用的机制。

当模板参数的形式为T&的时候:

template<class T>
void k(T& t) {}int x = 10; // x 是左值
k(x); // 调用k时,T被推导为int
k(20); // 调用k时,编译错误,因为不能把右值绑定到非常量左值引用上

你可以看到,在调用k时,如果传入一个右值,就会发生编译错误。这是因为右值是临时的,不能被修改或者延长其生命周期。如果想要让模板函数接受右值,可以使用常量左值引用或者右值引用作为模板参数的形式。

引用折叠

引用折叠是指在定义一个引用类型时,如果它本身就是一个引用类型,那么会发生如下的转换:

  • 左值引用& + 左值引用& = 左值引用&
  • 右值引用&& + 右值引用&& = 右值引用&&
  • 左值引用& + 右值引用&& = 左值引用&
  • 右值引用&& + 左值引用& = 左值引用&

例如:

int x = 10; // x 是左值
int &r1 = x; // r1 是左值引用
int &&r2 = 20; // r2 是右值引用// 引入了两个别名类型:
using LRef = int &;
using RRef = int &&;LRef &r3 = r1; // r3 的类型是 LRef &,即 int & &,经过折叠后变为 int &
RRef &&r4 = r2; // r4 的类型是 RRef &&,即 int && &&,经过折叠后变为 int &&
LRef &r5 = r2; // r5 的类型是 LRef &,即 int & &&,经过折叠后变为 int &
RRef &&r6 = r1; // r6 的类型是 RRef &&,即 int && &,经过折叠后变为 int &

结合这两个规则,我们就可以理解万能引用的工作原理。例如:

template<class T>
void g(T&& t) {}int x = 10; // x 是左值
g(x); // 调用g时,T被推导为int&(注意不是int),因此t的类型是int& &&// 经过折叠后变为int&(左值)
g(20); // 调用g时,T被推导为int(注意不是int&),因此t的类型是int &&// 经过折叠后仍然是int&&(右值)

你可以看到,在调用g时,t既可以绑定到左值上也可以绑定到右值上,并且保持了原来实参的属性。这就实现了万能引用。

http://www.khdw.cn/news/59517.html

相关文章:

  • wordpress忽略更新推推蛙seo
  • 怎么备份网站数据库seo公司厦门
  • 成都设计公司排名简介优化电池充电什么意思
  • 网络营销策划ppt范例seo推广软件品牌
  • windows2008 iis网站 指定域名十个有创意的线上活动
  • 如何使用wordpress制作网站神童预言新冠2023结束
  • 沈阳媒体厦门seo总部电话
  • 于都建设银行网站招聘云盘搜索引擎入口
  • 泉州公司做网站百度惠生活商家入驻
  • 企业网站keywords最多几个app开发软件
  • 巴中免费网站建设福州seo扣费
  • 网站开发 需求说明书中国数据网
  • 网站建设知识点小吃培训2000元学6项
  • 辽宁省住房建设厅网站搜索引擎都有哪些
  • 福田商城网站建设cps推广平台有哪些
  • 自己做网站一定要实名吗目前推广平台都有哪些
  • wordpress网站从零广告公司怎么找客户资源
  • wordpress的安全性如何seo推广 课程
  • 网站后台更新栏目seo上海公司
  • 怎么用路由器做网站网络营销推广技术
  • 西安优化官网公司宁波seo
  • 网站设计太原百度站长联盟
  • 贵州网站制作公司如何自制网站
  • 网站建设需要提供哪些材料seo优化快速排名技术
  • 手机终端网站南昌seo计费管理
  • 建设文化产业网站的方案搜索引擎优化的主要工作
  • 海外推广平台有哪些龙岗seo网络推广
  • 网站开发框架 开源2023全民核酸又开始了
  • 兼积做调查挣钱网站南宁seo网络推广
  • 湖北武汉医院网站建设故事式软文范例500字