快速业务通道

泛型编程-转移构造函数(Generic Programming: Move Constructor)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
的类型时,如vector< vector<string> >,mojo化的vector“更能适应元素个数增减的需要”。

7 结论

mojo是一种技术,也是一个紧凑的小框架,用于消除不必要的临时对象的复制。mojo的工作方式是检测临时对象并且通过函数重载操纵他们而不是简单的作为左值。这样做的结果是,获得临时对象的函数执行一个破坏性的复制,只要确信其他代码不再使用这个临时对象即可。

如果客户代码按照一套简单的规则传递函数参数和返回值,可以应用mojo。

mojo定义了一个单独的机制来消除函数返回时的复制。

额外的机制和类型转换使mojo对于客户代码不是100%的透明,然而对于基于库的解决方案来说集成度是相当好的。说得好听一点,mojo将作为一个健壮的替代品,直到一个更健壮的、基于语言特性的被标准化并实现。

8 致谢

原文的致谢略,译文得到了Wang Tianxing的热情帮助,除了帮助我审核了若干技术细节之外,还指出了不少打字错误,以及若干英语中的谚语。

9 参考文献

[1] Dov Bulka and David Mayhew. Efficient C++: Performance Programming Techniques, (Addison-Wesley, 1999).

[2] Howard E. Hinnant, Peter Dimov, and Dave Abrahams. "A Proposal to Add Move Semantics Support to the C++ Language," ISO/IEC JTC1/SC22/WG21 — C++, document number N1377=02-0035, September 2002, <http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1377.htm>.

[3] "Programming Languages — C++," International Standard ISO/IEC 14882, Section 12.2.

[4] Herb Sutter. More Exceptional C++ (Addison-Wesley, 2002).

[5] Andrei Alexandrescu. Modern C++ Design (Addison-Wesley, 2001).

[6] John Lakos. Large-Scale C++ Software Design (Addison-Wesley, 1996), Section 9.1.9.

[7] Herb Sutter. Exceptional C++ (Addison-Wesley, 2000).

作者简介

Andrei Alexandrescu是一位华盛顿大学西雅图分校的博士生,广受赞誉的《Modern C++ Design》(中译本现代C++设计正在译制中)一书的作者。可以通过电子邮件andrei@metalanguage.com联系。Andrei还是一个C++课程的有号召力的讲师。

译者的话

作为第一次编译技术文章,而且选择的是C++中自己相对比较陌生的主题,并且本文讲述的内容是具有前瞻性的,而不是见诸于现有资料和文献的重新整理。因此在翻译过程中,有些细节译者本人也没有完全理解,因此难免出现不少差错,欢迎大家来到newsfan的C++新闻组讨论。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号