1.?auto_ptr? auto_ptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。auto_ptr 在拷贝和赋值的时候有不寻常的行为,因此 auto_ptrs ...
分类:
其他好文 时间:
2015-08-28 13:42:07
阅读次数:
207
Item 14: Think carefully about copying behavior in resource-managing classes.
在Item 13:使用对象来管理资源中提出了基于RAII的资源管理对象,auto_ptr和shared_ptr。
智能指针可以有不同的拷贝策略。当你实现这样一个资源管理对象时,需要特别注意。比如一个典型的RAII风格的互斥锁实现:...
分类:
编程语言 时间:
2015-08-27 11:14:40
阅读次数:
205
我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的au...
分类:
其他好文 时间:
2015-08-17 15:24:40
阅读次数:
123
前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元...
分类:
其他好文 时间:
2015-08-17 15:20:34
阅读次数:
114
智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能...
分类:
其他好文 时间:
2015-08-17 15:19:56
阅读次数:
122
C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理,使用std::auto_ptr,要#include 。
实现代码如下:
#include
#include
using namespace std;
//#define _THROW0() throw ()抛出全部异常
template
class auto_ptr
{
public:
/...
分类:
编程语言 时间:
2015-08-16 12:21:41
阅读次数:
145
auto_ptr它是C++标准库()为了一个智能指针类模板来解决资源泄漏所提供的问题(注意:这只是一个简单的智能指针)auto_ptr在事实原则的实现RAII,对资源的访问,在施工时间。释放资源时,析构函数,而相关的指针操作超载。使用起来就像普通的指针。std::auto_ptr pa(new Cl...
分类:
编程语言 时间:
2015-08-13 08:49:24
阅读次数:
229
《More Effective C++》ITEM M9他提到auto_ptr。说是当异常产生的时候。怎么释放为对象分配的堆内存,避免反复编写内存释放语句。PS:这里书里面提到函数退出问题,函数退出会清理栈内存,无论是怎么正常退出还是异常退出(仅有一种例外就是当你调用 longjmp 时。Longjm...
分类:
编程语言 时间:
2015-08-08 11:41:18
阅读次数:
144
C++ Primer 学习笔记_24_类与数据抽象(10)--static 与单例模式、auto_ptr与单例模式、const成员函数、const 对象、mutable修饰符
前言
【例】写出面向对象的五个基本原则?
解答:单一职责原则,开放封闭原则,依赖倒置原则,接口隔离原则和里氏替换原则
里氏替换原则:子类型必须能够替换他们的基类型。
设计模式分为三种...
分类:
编程语言 时间:
2015-08-03 01:15:15
阅读次数:
175
如果在程序中使用new从堆(自由存储区)分配内存,等到不需要时, 应使用delete将其释放。c++引入了智能指针auto_ptr, 以帮助自动完成这个过程。 c++11摒弃了auto_ptr,并新增了三种智能指针:unique_ptr, shared_ptr, weak_ptr。
一. auto_ptr, unique_ptr , shared_ptr
头文件: #include...
分类:
编程语言 时间:
2015-07-30 00:46:46
阅读次数:
271