Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

14.5.5 以移动方式返回结果

有一种常用的返回大量信息的技术:将信息放在自由存储空间中,然后返回指向它的指针。但这种技术也是高复杂性的来源以及内存管理错误的主要来源:对于从函数返回的指向自由存储空间的指针,谁delete它?当发生异常时,我们能否确保指向自由空间中对象的指针被正确delete?除非我们采用了系统的指针管理(或使用unique_ptr和shared_ptr这样的“智能”指针),否则答案可能是“好的,我认为是这样的”。而这并不足够好。

幸运的是,当我们向vector添加移动操作时,就解决了vector的上述问题:使用移动构造函数将元素的所有权从函数移出。例如:

make_vec()的这个(最终)版本最为简单,也是我推荐的版本。移动方法可推广到所有容器以及所有其他资源句柄。例如,fstream使用这种技术跟踪文件句柄。移动方法既简单又通用。使用资源句柄简化了代码并消除了主要错误来源。与直接使用指针的方案相比,没有任何运行时开销,即使有的话,也非常小且容易预测。

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252