<b>泛型编程-转移构造函数(Generic Programming: Move Constructor)</b>[VC/C++编程]
本文“<b>泛型编程-转移构造函数(Generic Programming: Move Constructor)</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1 引言
我相信大家很理解,成立、复制和销毁暂时对象是C++编译器最爱的户内运动.不幸的是,这些行为会降低C++程序的性能.确切,暂时对象普通被视为C++程序低效的第一因素[1].
下面的代码是精确的:
vector < string > ReadFile();
vector < string > vec = ReadFile();
大概
string s1, s2, s3;
//...
s1 = s2 + s3;
但是,假如关心效率,则需求限制近似代码的利用.ReadFile()和operator+成立的暂时对象辨别被复制然后再废弃.这是一种浪费!
为了办理这个问题,需求一些不太文雅的约定.比方,可以按照引用传送函数参数:
void ReadFile(vector < string > & dest);
vector < string > dest;
ReadFile(dest);
这相当令人讨厌.更糟的是,运算符没有这个挑选,所以假如想高效的处理大对象,程序员必须限制成立暂时对象的运算符的利用:
string s1, s2, s3;
//...
s1 = s2;
s1 += s3;
这种难缠的伎俩普通减缓了计划大程序的大团队的工作效率,这种强加的持续不断的懊恼扼杀了编写代码的爱好并且增添了代码数目.莫非从函数返回值,利用运算符传送暂时对象,这样做是错误的吗?
一个正式的基于语言的办理筹划的提议已经递交给了尺度化委员会[2].Usenet上早已引发了大谈论,本文也因此在此中被反复谈论过了.
本文展示了若何办理C++存在的不必要的复制问题的办法.没有百分之百让人称心地办理筹划,但是一个干净的程度是可以到达的.让我们一步一步的来成立一个强有力的框架,来帮忙我们从程序中消除不需求的暂时对象的复制.这个办理筹划不是百分之百透明的,但是它消除了全部的不需求的复制,并且封装后足以供应一个坚固的替换品,直到多年今后,一个干净的、基于语言的尺度化的实现呈现.
以上是“<b>泛型编程-转移构造函数(Generic Programming: Move Constructor)</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |