首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++primer中的使用计数,小弟我用静态数据成员能不能代替它

2012-04-09 
c++primer中的使用计数,我用静态数据成员能不能代替它?#includeiostreamusing namespace stdclass HasP

c++primer中的使用计数,我用静态数据成员能不能代替它?
#include<iostream>
using namespace std;
class HasPtr
{
  private:
static size_t use; //用静态成员代替使用计数
int *p;
int val;
  public:
static size_t get_use();
HasPtr(int *ip, int ival):p(new int(*ip)), val(ival){}
HasPtr(const HasPtr& obj):p(obj.p), val(obj.val) //只要对象被复制或者赋值都使use++
{
use++;
}
~HasPtr();
 
HasPtr& operator=(const HasPtr& obj);


};
size_t HasPtr::use = 1;
size_t HasPtr::get_use()
{
return use;
}
HasPtr::~HasPtr ()
{
if(--use == 0) //如果只有一个对象中的p指向基础对象就删除p
delete p;
}
HasPtr& HasPtr::operator = (const HasPtr& obj)
{
use++;
p = obj.p;
val = obj.val;
return *this;
}
int main()
{
int ival = 10;
HasPtr A(&ival, 5);
HasPtr B(A);
cout << HasPtr::get_use() << endl; 
return 0;
}
这样使用静态数据成员可以代替使用计数吗?

[解决办法]
你的明白静态的意义,我建议你好好再去理解下
你用静态替代的话就不能称为只能指针。
[解决办法]
用全局变量也行。只是这样做会破坏类的封装。逻辑不合理。

热点排行