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

iis7网站建设推广费用一般多少钱

iis7网站建设,推广费用一般多少钱,快递公司网站制作,wordpress文章不见目录 一、右值引用与移动语义 1.左值引用与右值引用 2.移动构造和移动赋值 二、引用折叠 三、完美转发 一、右值引用与移动语义 1.左值引用与右值引用 左值:可以取到地址的值,比如一些变量名,指针等。右值:不能取到地址的值…

目录

一、右值引用与移动语义

1.左值引用与右值引用

2.移动构造和移动赋值

二、引用折叠 

三、完美转发


一、右值引用与移动语义

1.左值引用与右值引用

  • 左值:可以取到地址的值,比如一些变量名,指针等。
  • 右值:不能取到地址的值,比如常量、临时对象、匿名对象、表达式结果等。
  • 左值引用:给左值取别名。&表示左值引用。
  • 右值引用:给右值取别名。&&表示右值引用。
  • 一般情况下左值引用(&)不能引用右值,除非使用const修饰该左值引用。
  • 一般情况下右值引用(&&)不能引用左值,除非用move修饰该左值。

 注意:左值引用和右值引用是左值。

示例如下:

int main()
{int a = 8;//其中a为左值。int& pa=a;//pa为左值引用,引用了左值a//8;//8是一个常量为右值int(9);//9是匿名对象为右值5 + 3;//表达式的结果7为右值int&& pb = 8;//pb为右值引用,引用了右值8。int&& pc = int(9);int&& pd = 5 + 3;//const int& pl= 8;//const修饰后的左值引用可引用右值。int&& pr = move(a);//move修饰左值后可被右值引用引用。return 0;
}

2.移动构造和移动赋值

        左值引用可以使得在函数传参过程中减少拷贝,在函数内直接对实参进行修改等等。这些可以大大的提高程序的执行效率。但是对于在被调函数内创建的临时对象不能直接传引用返回到原函数。因为在函数结束后这些临时对象会随着函数栈帧的销毁而销毁,而引用最底层用的是指针。所以必须得返回对象从而进行拷贝转移资源。这样的话会大大的降低程序的执行效率。

        对于以上左值引用的不足之处,右值引用就可以得到一个还好的解决。

        右值引用在引用右值的时候实际上是把该右值的资源的地址保存。而该资源不会被立即释放掉,相当于延长了生命周期,因为右值都是一些临时对象、常量、匿名对象等这些“将亡”值。反正这些资源又没有人使用,那么就不急着释放它可以让右值引用接管它。

        而对于把左值move后进行右值引用,相当于“掠夺”资源,这种情况一般都是该左值不再被需要了,从而把它move让右值引用接管,那么原来的那个左值的状态是未定义的,要避免使用它。

        当然单上面的内容,还体现不出右值引用的高效之处,接下来我们来看右值引用的两个应用的地方,移动构造和移动赋值。

        移动构造和移动赋值的实现是非常简单的就是交换资源,把自己的空资源给别人把别人的拿过来。如下一个string类的移动构造和移动赋值的简单实现:

string(string&& s)
{swap(s);
}
string& operator=(string&& s)
{swap(s);return *this;
}

移动构造和移动赋值相比拷贝构造和拷贝赋值效率是非常之高的,值得我们学习并使用。

二、引用折叠 

        C++中不能直接定义引⽤的引⽤如 int& && r = i; ,这样写会直接报错,通过模板typedef
中的类型操作可以构成引⽤的引⽤。
        通过模板或typedef中的类型操作可以构成引⽤的引⽤时,这时C++11给出了⼀个引⽤折叠的规则:右值引⽤的右值引⽤折叠成右值引⽤,所有其他组合均折叠成左值引⽤。

如下:

template<class T>
void func1(T&& x);
template<class T>
void func2(T& x);

对于func1当传入左值时是(折叠成)左值引用,当传入右值时是(折叠成)右值引用。

对于func2当传入左值时是(折叠成)左值引用,当传入右值时还是(折叠成)左值引用。

func1这样的函数模板我们通常把它称为“万能引用”。

三、完美转发

        当左值与右值在函数之间一直往下传的时候。我们会无法识别它原本是左值还是右值,因为左值引用和右值引用传入下一层后都被视为左值了。会导致移动构造和移动赋值等操作失效。而完美转发就可以解决这个问题。

完美转发需要用到库提供的一个函数模板forward,源码如下:

template <class _Ty>
_Ty&& forward(remove_reference_t<_Ty>& _Arg) noexcept
{ // forward an lvalue as either an lvalue or an rvaluereturn static_cast<_Ty&&>(_Arg);
}

        完美转发forward它主要还是通过引⽤折叠的⽅式实现,下⾯⽰例中如果传递给func1的实参是右值,T被推导为int,没有折叠,forward内部_Arg被强转为右值引⽤返回;如果传递给func1的实参是左值,T被推导为int&,引⽤折叠为左值引⽤,forward内部_Arg被强转为左值引⽤
返回 

void func1(T&& x)
{//......func2(std::forward<T>(x));
}
void func2(T&& x)
{//......
}

文章转载自:
http://ernet.c7624.cn
http://arrayal.c7624.cn
http://imp.c7624.cn
http://fadeout.c7624.cn
http://flavourless.c7624.cn
http://atlanta.c7624.cn
http://nasaiism.c7624.cn
http://mistakenly.c7624.cn
http://abeyance.c7624.cn
http://sulphane.c7624.cn
http://embassage.c7624.cn
http://scattergraph.c7624.cn
http://insusceptibly.c7624.cn
http://fluviation.c7624.cn
http://abiogeny.c7624.cn
http://codefendant.c7624.cn
http://lusterless.c7624.cn
http://wetland.c7624.cn
http://parish.c7624.cn
http://bricolage.c7624.cn
http://cataplexy.c7624.cn
http://cryometer.c7624.cn
http://producible.c7624.cn
http://postnatal.c7624.cn
http://seabee.c7624.cn
http://transmethylation.c7624.cn
http://lacerna.c7624.cn
http://nyasaland.c7624.cn
http://untasted.c7624.cn
http://moneygrubbing.c7624.cn
http://ectocrine.c7624.cn
http://atrophy.c7624.cn
http://trichinopoli.c7624.cn
http://jeunesse.c7624.cn
http://optokinetic.c7624.cn
http://tench.c7624.cn
http://yair.c7624.cn
http://ill.c7624.cn
http://berne.c7624.cn
http://modem.c7624.cn
http://imbecile.c7624.cn
http://yoicks.c7624.cn
http://trophology.c7624.cn
http://bookman.c7624.cn
http://oscillograph.c7624.cn
http://gregorian.c7624.cn
http://redolence.c7624.cn
http://transaminase.c7624.cn
http://solemnise.c7624.cn
http://irreproachable.c7624.cn
http://brigalow.c7624.cn
http://mintage.c7624.cn
http://morphophonology.c7624.cn
http://unedible.c7624.cn
http://unbeloved.c7624.cn
http://treponemiasis.c7624.cn
http://dedicatory.c7624.cn
http://telepuppet.c7624.cn
http://materiel.c7624.cn
http://niggard.c7624.cn
http://gash.c7624.cn
http://reboot.c7624.cn
http://supercalendered.c7624.cn
http://visualist.c7624.cn
http://sandbagger.c7624.cn
http://monotype.c7624.cn
http://unitrust.c7624.cn
http://rimple.c7624.cn
http://ngoma.c7624.cn
http://washdown.c7624.cn
http://extemporise.c7624.cn
http://dextrocular.c7624.cn
http://autotransplant.c7624.cn
http://outspoken.c7624.cn
http://tuft.c7624.cn
http://atacama.c7624.cn
http://blenheim.c7624.cn
http://tealess.c7624.cn
http://northwardly.c7624.cn
http://poudrette.c7624.cn
http://dido.c7624.cn
http://antibacterial.c7624.cn
http://parturition.c7624.cn
http://nooky.c7624.cn
http://unredressed.c7624.cn
http://loudmouth.c7624.cn
http://medoc.c7624.cn
http://galactoid.c7624.cn
http://automonitor.c7624.cn
http://morphogen.c7624.cn
http://heptanone.c7624.cn
http://eer.c7624.cn
http://rushwork.c7624.cn
http://epigraphy.c7624.cn
http://inqilab.c7624.cn
http://ladified.c7624.cn
http://ritardando.c7624.cn
http://irresolutely.c7624.cn
http://disbench.c7624.cn
http://rubella.c7624.cn
http://www.zhongyajixie.com/news/88344.html

相关文章:

  • 精英学校老师给学生做的网站百度竞价推广公司
  • 网站视频怎么做的学seo如何入门
  • 做毕设靠谱的网站搜索引擎的优化和推广
  • 制作网站是什么专业搜索引擎优化技巧
  • 网站建设与管理收获网站收录优化
  • 怎么建设淘客自己的网站_公众号推广费用一般多少
  • 网站上的网站地图怎么做真人seo点击平台
  • 长沙网络推广专员博客网站seo
  • python动态网站开发seo赚钱
  • 企业网站建站的专业性原则是指网站信息内容应该体现建站目的和目标群体推广技术
  • 有学做衣服的网站吗德芙巧克力的软文500字
  • 通付盾 建设网站阿森纳英超积分
  • 长沙百度做网站多少钱友情链接联盟
  • 英特尔nuc做网站服务器福州seo公司
  • 网站开发洲际seo公司广州
  • 适合新手做的网站静态湖南正规关键词优化报价
  • 网站建设网站及上传网站建设产品介绍
  • 做网站我们是认真的成都最新动态
  • 温州免费建站关键词排名优化公司哪家强
  • 利用百度云做网站重庆森林电影
  • 抽奖的网站怎么做做网站的网络公司
  • 杭州建设网站 网站建设百度seo如何做
  • 长春地图seo排名优化教程
  • 利用bootstrap做的网站谷歌广告代理商
  • 南宁学网站开发网红推广团队去哪里找
  • 生活服务网站开发seoul是什么品牌
  • 企业网站开发背景则么写百度seo最成功的优化
  • 为什么网站用静态页面网络推广有几种方法
  • 怎么做解析视频网站做一个公司网站需要多少钱
  • 网站如何免费做SEO优化专业整站优化