c++ 智能指针作为编程标准的使用?

栏目: C++ · 发布时间: 6年前

内容简介:越来越多的我听说,我应该使用智能指针而不是裸指针,尽管我有有效的内存泄漏系统实现.请问使用智能指针的正确编程方法是什么?是否应该使用它,即使我检查分配的内存块上的内存泄漏?还是由我决定的如果我不使用它们,这可以被认为是编程弱点吗?如果强烈推荐使用智能指针(例如:std :: auto_ptr),我应该使用它们而不是每个裸指针吗?

越来越多的我听说,我应该使用智能指针而不是裸指针,尽管我有有效的内存泄漏系统实现.

请问使用智能指针的正确编程方法是什么?是否应该使用它,即使我检查分配的内存块上的内存泄漏?还是由我决定的如果我不使用它们,这可以被认为是编程弱点吗?

如果强烈推荐使用智能指针(例如:std :: auto_ptr),我应该使用它们而不是每个裸指针吗?

您应该使用RAII处理所有资源分配.

智能指针只是该规则的一个常见特殊情况.

而智能指针不仅仅是shared_ptr.有不同的所有权语义的不同智能指针.使用适合您需要的产品. (主要的是scoped_ptr,shared_ptr,weak_ptr和auto_ptr / unique_ptr(更喜欢后者,如果可用)根据您的编译器,它们可能在标准库中可用,作为TR1的一部分,或者根本不在这种情况下可以通过Boost库获得它们.

是的,你应该绝对使用这些.它花费你什么(如果正确地,你失去了零性能),并且它获得了很多(内存和其他资源被自动释放,你不必记得手动处理,你的代码使用资源获取更短更简洁)

请注意,并不是每个指针使用都代表某种资源所有权,因此并不是所有的原始指针使用都是错误的.如果你只需要指向别人所拥有的对象,那么一个原始的指针是完全合适的.但是,如果您拥有对象,那么您应该对其进行适当的所有权,无论是通过将类本身RAII语义,还是将其包装在智能指针中.

http://stackoverflow.com/questions/6142142/usage-of-smart-pointers-as-a-programming-standard


以上所述就是小编给大家介绍的《c++ 智能指针作为编程标准的使用?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

恰如其分的软件架构

恰如其分的软件架构

George Fairbanks / 张逸、倪健、高翌翔 / 华中科技大学出版社 / 2013-9-1 / 88.00

本书描述了一种恰如其分的软件架构设计方法。作者建议根据项目面临的风险来调整架构设计的成本,并从多个视角阐述了软件架构的建模过程和方法,包括用例模型、概念模型、域模型、设计模型和代码模型等。本书不仅介绍方法,而且还对方法和概念进行了归类和阐述,将软件架构设计融入开发实践中,与 敏捷开发方法有机地结合在一起,适合普通程序员阅读。 . 这是一本超值的书,案例丰富有趣,言简意赅,阅读轻松。当年......一起来看看 《恰如其分的软件架构》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具