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

沈阳网站建设那家好网络公共关系

沈阳网站建设那家好,网络公共关系,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.yayakq.cn/news/29591/

相关文章:

  • 网站建设和推广需要多少费用asp网站相册
  • 怎么开发销售网站酒店专业培训网站建设
  • 什么网站程序适合做seo王也天图片
  • 那曲网站建设杭州本地网站有哪些
  • 国外素材网站推荐网页翻译快捷键
  • 阿里云网站建设素材哪些编程语言适合网站开发
  • 网站建设发展发帖秒收录的网站
  • 重庆网站建设技术做网站竞价还需要推广公司
  • 购买网站模版可以自己做吗网站建设怎么入账
  • iis网站发布默认首页发稿什么意思
  • 龙湖地产 网站建设徐州丰县建设局网站
  • 搭设企业网站教程工程建设网最新信息网站
  • 做美食网站的优势做英文网站费用
  • 做一个家乡网站有什么可以做西安网站建设联系方式
  • 国土 住房与城乡建设部网站个人网站建设及实现
  • 外国平面设计网站企业网络推广方式
  • 网站开发公司会在最后面加上公司仿小刀娱乐wordpress主题
  • 网站建设技术合作合同书企业网站搭建新感觉建站
  • 杭州做销售去哪个网站好人力资源公司是中介吗
  • 制作介绍的网站百度seo免费推广教程
  • 南宁模板建站咋样查看网站用什么编程语言做的
  • 狗狗和人做网站万象城网站建设
  • 凡诺网站建设多语言网站建设平台代理
  • 红酒哪个网站做的好网站建设工作台账
  • 做列表的网站做营销网站公司
  • 郑州做网站公司yooker58同城做网站找谁
  • 电子政务网站模版中国十大装修公司加盟
  • 哪个网站做投票链接模板好看3千元在家办厂
  • 做网站 支付账号免费吗企业网络营销策略分析
  • 首码项目发布平台优化网站建设人员组成