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

网站建设小程序南宁文本文档做网站

网站建设小程序南宁,文本文档做网站,背景网站建设,简单的生产管理系统一、左值引用与右值引用的区别 1.左值引用是对左值的引用;右值引用是对右值的引用(不过也有特例) const左值引用能指向右值,不过不能修改;右值引用通过std::move(v)可以指向左值 声明出来的左值引用或者右值引用都是…

一、左值引用与右值引用的区别

1.左值引用是对左值的引用;右值引用是对右值的引用(不过也有特例)

const左值引用能指向右值,不过不能修改;右值引用通过std::move(v)可以指向左值

声明出来的左值引用或者右值引用都是左值(int& lref = n, int&& rref = 20, lref和rref都是左值)

2.左值引用与右值引用在功能上的差异

(1)左值引用:左值引用用来传参或者做函数返回值可以避免对象的拷贝

(2)右值引用:实现移动语义和完美转发

①移动语义:通过实现移动语义,对象赋值时,避免资源的重新分配(移动构造和移动赋值构造)

②完美转发:函数模版可以将自己的参数完美地转发给内部调用的其他函数

完美指的是不仅能准确地转发参数的值,还能保证被转发的参数的左右值属性不变

// 接受左值引用的函数
void func(int &n) 
{std::cout << "lvalue=" << n << std::endl;
}// 接受右值引用的函数
void func(int &&n) 
{std::cout << "rvalue=" << n << std::endl;
}// 模板函数,使用std::forward完美转发
template<typename T>
void revoke(T &&t) 
{// 函数模版的参数 -完美交给-> 内部的函数// 参数的值 + 参数的左右值属性func(std::forward<T>(t)); 
}int main() {int num = 10;revoke(num);  // 传入左值 lvalue=10revoke(20);   // 传入右值 rvalue=20return 0;
}

借助T&&实现转发语义,引入了引用折叠规则:参数为左值或左值引用,T&&将转化为A&;参数为右值或右值引用,T&&将转化为A&&

std::forward<T>(v) T为左值引用类型,v将转化为 T类型的左值;T为右值引用类型,v将转化为 T类型的右值

二、区分左值和右值

1.左值:可以在等号左边,能够取地址,具名(下面举一些例子)

变量名、前置自增和自减(++i,--i)、解引用表达式

返回左值引用的函数调用

// 定义一个函数,返回vector<int>中指定位置元素的左值引用
std::vector<int>& getElement(std::vector<int>& vec, size_t index) {return vec[index];
}std::vector<int> numbers = {1, 2, 3, 4, 5};
// 调用函数获取左值引用
// getElement(numbers, 2)这个函数调用就是左值
int& ref = getElement(numbers, 2);

赋值运算或复合赋值运算符表达式

// (i = 9)是左值
(i = 9) = 1000;
std::cout << "i:" << i << std::endl; // i:1000
// (i += 20)是左值
(i += 20) = 10000;
std::cout << "i:" << i << std::endl; // i:10000

2.右值:只能在等号右边,不能取地址,不具名;右值分为两大类,纯右值和将亡值

(1)纯右值:字面值、返回非引用类型的函数调用、后置自增和自减

算术表达式[a+b]、逻辑表达式[a&&b]、比较表达式[a==b, a >= b]

(2)将亡值:C++11新引入的与右值引用[移动语义]相关的值类型

将亡值用来触发移动构造移动赋值构造,进行资源转移,之后将亡值将调用析构

std::move static_cast<T&&>(x) 可以将左值转化为将亡值(将左值转换为右值、使拷贝变为移动)


文章转载自:

http://WZvsFff4.rwjfs.cn
http://6LdnjW31.rwjfs.cn
http://1SkjDGM3.rwjfs.cn
http://mrHRo3rA.rwjfs.cn
http://rY0CKxn0.rwjfs.cn
http://gEf6CrV8.rwjfs.cn
http://EhAHe8Qy.rwjfs.cn
http://h9B53TmA.rwjfs.cn
http://pKKlMOri.rwjfs.cn
http://svm5n8ou.rwjfs.cn
http://V8ZBRQGS.rwjfs.cn
http://FS3809pq.rwjfs.cn
http://mRaZ1v0b.rwjfs.cn
http://YQgOwGuV.rwjfs.cn
http://c9jJaL5U.rwjfs.cn
http://Gky4ivWf.rwjfs.cn
http://MZs12KoM.rwjfs.cn
http://2cuAFNoq.rwjfs.cn
http://khT7x8K5.rwjfs.cn
http://GTQxO0p9.rwjfs.cn
http://GVuQ5BA3.rwjfs.cn
http://VUPvgRNt.rwjfs.cn
http://dBQnRbVE.rwjfs.cn
http://TmdNDWBz.rwjfs.cn
http://abBmBEU4.rwjfs.cn
http://7sbG2KiG.rwjfs.cn
http://Mh9VKtcP.rwjfs.cn
http://DroHwDFQ.rwjfs.cn
http://5X7PymgN.rwjfs.cn
http://YLNWEHRJ.rwjfs.cn
http://www.dtcms.com/wzjs/770651.html

相关文章:

  • 手机营销网站模板动易网站 教程
  • 设计公司网站多少钱如何做网站app
  • 青海省城乡建设信息官官方网站wordpress首页自定义缩略图
  • 公司的网站 优帮云信息产业部 备案网站
  • discuz 网站备案信息代码公司基础建设的意义
  • 初二做网站的首页模板网站建设颜色代码表
  • 网站制定企业网站建设网站有哪些
  • 建设网站有什么原则微信版本的wordpress
  • 网站开发连接数据库的方法洛阳网站建设公司
  • 北京工厂网站建设专业返利网站建设
  • 网站被刷怎么办牡丹江 网站建设
  • 建设部网站安全考核证书查询望城区网站建设
  • 卢松松外链工具杭州seo培训学校
  • 廊坊建设企业网站文字生成图片
  • 建设小型网站需要什么技术wordpress打开有盗链
  • 做购物网站的图标从哪里来建筑设计资质加盟
  • 网站开发合同 深圳思wordpress get title
  • 招商网官网平台北京网站关键字优化
  • 网站建设的探讨与研究ifttt wordpress
  • 成都市建设领域信用系统网站阿土伯网站做产品推广咋样
  • 国外网站为什么不用备案服务器活动
  • 电商网站开发的难点在哪里用织梦系统怎么做网站
  • 公司网站发布流程html菜鸟教程首页
  • 做驾考学时在哪个网站网站建设属于前端还是后台
  • 家具网站模版如何利用电商平台推广
  • 网站开发工作程序怎么写葫芦岛建设网站
  • 互联网排名前十的公司西安seo主管
  • 广西网站建设哪家不错申请个网站要多少钱
  • 建基建设集团网站辣条网站建设书
  • wordpress多语言建站江苏廉政建设网站