智能指针的问题!
创建智能指针的类来实现对象的共享,但是我觉得智能指针的完全可以用静态变量来实现啊!
代码:
- 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;
}
这样.
所以,上面是能析构的