读书人

智能指针的有关问题

发布时间: 2012-04-10 21:03:56 作者: rapoo

智能指针的问题!
创建智能指针的类来实现对象的共享,但是我觉得智能指针的完全可以用静态变量来实现啊!
代码:

C/C++ code
#include <iostream>using namespace std;class SmartPoint{    friend class ShareClass;    int *ip;    size_t use;    SmartPoint(int *p):ip(p),use(1){    }    ~SmartPoint(){        delete ip;    }};class ShareClass{    public :    ShareClass(int *p):sp(new SmartPoint(p)){    }    ShareClass(const ShareClass&sc):sp(sc.sp){        ++(sp->use);    }    ShareClass &operator=(const ShareClass &sc);    ~ShareClass(){        if(sp->use==0){            delete sp;        }    }    private:    SmartPoint *sp;};

SmartPointer类用来实现共享,和static的成员的共同点是:任意一个对象修改了共享的对象,会影响到其他的对象,static共享也不会出现什么悬垂指针的问题。最大的区别感觉只有一点:static对象是所有对象共享,不管是通过构造函数创建的,还是通过复制构造函数创建的。而智能指针则只能是通过复制构造函数创建的和源对象共享!!
还有什么其他的区别吗????

[解决办法]
你析构写错了
~ShareClass(){
if(--sp->use==0){
delete sp;
}
这样.

所以,上面是能析构的

读书人网 >C++

热点推荐