自己的引用计数

原创 2013年12月02日 14:41:18
#include<iostream>  
using namespace std;  

class ObjBase  
{  
public:
	int *pi;  //数据
	size_t* use;  //计数器
	ObjBase()
	{  
		cout << "U_ptr constructor called !" << endl;  
	}  
	~ObjBase()  
	{  
		cout << "U_ptr distructor called !" << endl;  
	}  
};  
class Inherit:public ObjBase
{
public:
	Inherit(int* p)
	{
		pi = p;
		use = new size_t(1);
		cout << "HasPtr constructor called ! " << "use = " <<*use << endl;  
	}

	Inherit(const Inherit& orig)
	{
		pi = orig.pi;
		use = orig.use;
		++*use;
		cout << "Inherit constructor called ! " << "use = " << *use << endl;  
	}

	Inherit& operator=(const Inherit& rhs)
	{  
		++*rhs.use;  
		if (--*use == 0)  
		{
			delete use;  
			delete pi;  
		}
		use = rhs.use;   
		pi = rhs.pi;
		return *this;  
	}  

	~Inherit()  
	{  
		cout << "Inherit distructor called ! " << "use = " <<*use << endl;  
		if (--*use == 0)  
		{
			delete pi;  
			delete use;
		}
	}  
};

int main(void)  
{  
	int *pi = new int(42);  //一个数据

	Inherit *hpA = new Inherit(pi);
	Inherit* hpB = new Inherit(*hpA);
	Inherit* hpC = new Inherit(*hpA);
	Inherit* hpD = new Inherit(*hpB);

	int *pi2 = new int(42);  //一个数据
	Inherit* hpE = new Inherit(pi2);
	*hpE = *hpA;

	delete hpA;
 	delete hpB;
    delete hpC;
 	delete hpD;
	delete hpE;
	return 0;  
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

单片机引用计数

  • 2012年08月20日 19:32
  • 482KB
  • 下载

COM学习——动态绑定之引用计数

  • 2011年06月18日 14:47
  • 3.58MB
  • 下载

写高质量OC代码52建议总结:30.以ARC简化引用计数

if ([self shouldLogMessage]) { NSString *message = [[NSString alloc] initWithFormat:@"I am objec...

ios5之自动引用计数

  • 2012年03月20日 09:02
  • 478KB
  • 下载

Android - 引用计数(sp、wp、Refbase)

Boost和Loki是应用比较广泛的引用计数方案,Android提供了另外一个引用计数方案,就是sp、wp和Refbase组合。 强引用和弱引用区别 一般都是用强引用,如果出现互相引用,至少一方使...
  • Gykimo
  • Gykimo
  • 2013年03月12日 11:51
  • 1402

C++实现 带引用计数的智能指针

  • 2012年09月05日 23:07
  • 544KB
  • 下载

COM-引用计数

  • 2014年02月18日 11:15
  • 663KB
  • 下载

OC基础15:内存管理和自动引用计数

1、什么是ARC?    (1)、ARC全名为Automatic Reference Counting,即是自动引用计数,会自动统计内存中对象的引用数,并在适当时候自动释放对象;    (...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己的引用计数
举报原因:
原因补充:

(最多只允许输入30个字)