智能指针浅析(转)


智能指针和普通指针的区别在于智能指针实际上是对普通指针加了一层封装机制,这样的一层封装机制的目的是为了使得智能指针可以方便的管理一个对象的生

命期。智能指针内部有一个计数器,记录了当前内存资源到底有多少指针在引用(可以访问这个资源),当新增加一个可以访问这个资源的引用时,计数器会加

1,反之会减去1,当计数器为0时,智能指针会自动释放他所管理的资源。手动申请,自动释放,方便内存管理,防止内存泄漏。

智能指针的简单实现:

    每次创建类的新对象时,初始化指针并将引用计数置为1;

    当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;

    对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;这是因此左侧的

针指向了右侧指针所指向的对象,因此右指针所指向的对象的引用计数+1;
    
    调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除对象)。

 






posted @ 2015-05-27 21:39  外禅内定,程序人生  阅读(145)  评论(0编辑  收藏  举报