【C++】引用计数器简单示例

原创 2015年07月11日 09:10:47
//引用计数器  
// 封装一个计数器的类来维护,可以隐藏起来,即用户不必关心是如何实现的  
#include <iostream>
using namespace std;
class String_Rep
{
	friend class String;
public:
	String_Rep(const char *str = " ") :count(0)
	{
		m_data = new char[strlen(str) + 1];
		strcpy(m_data, str);
	}
	~String_Rep()
	{
		delete[]m_data;
	}
public:
	void increment()
	{
		count++;
	}
	void decrement()
	{
		if (--count == 0)
		{
			delete this;// 哪一个rep的count为0了释放当时的rep  
		}
	}
private:
	char *m_data;
	int count;
};
//////////////////////////////////////////////////////////////////////

class String
{
public:
	String(const char *str = " ") :rep(new String_Rep(str))
	{
		rep->increment();
	}
	String(const String &s) :rep(s.rep)
	{
		rep->increment();
	}
	String& operator=(const String &s)
	{
		if (this != &s)
		{
			rep->decrement();    // 迭代器  
			rep = s.rep;
			rep->increment();
		}
		return *this;
	}
	~String()
	{
		rep->decrement();
	}
public:
	void print()const
	{
		cout << rep->m_data << endl;
	}
private:
	String_Rep *rep;// 句柄  
};

int main()
{
	String s1("hello");
	String s2;
	s2 = s1;
	String s3("world");
	String s4;
	s4 = s3;
	s1.print();
	s2.print();
	s3.print();
	s4.print();
	return 0;
}

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

C++简单实现对象引用计数示例

C++简单实现对象引用计数示例 #include #include using namespace std; class String { public: String(const char...
  • chinawangfei
  • chinawangfei
  • 2016年02月17日 15:16
  • 1422

C++的一些简单示例

1、使用选择排序法对一组数据进行排序#include using namespace std;int main(){ int array[4]; int min; int s...
  • caoyahong114
  • caoyahong114
  • 2016年05月26日 12:05
  • 161

C++引用计数思想--利用引用计数器自定义String类

什么是引用计数?  最直观的垃圾收集策略是引用计数。引用计数很简单,但是需要编译器的重要配合,并且增加了赋值函数 (mutator) 的开销(这个术语是针对用户程序的,是从垃圾收集器的角度来看的...
  • FreeeLinux
  • FreeeLinux
  • 2016年07月31日 19:54
  • 997

C++11笔记(3)——引用&指针辨析

指针和引用辨析,异同区分
  • u012424148
  • u012424148
  • 2016年08月27日 18:29
  • 193

OC基础—内存管理之引用计数器

内存管理之引用计数器
  • ly307637627
  • ly307637627
  • 2014年04月26日 09:51
  • 849

内存管理与引用计数器机制

内存管理与引用计数器机制 1.内存管理:当程序需要空间,则手动分配空间。当空间或其他资源不再需要时,手动回收。 2.内存管理的必要性: 当涉及ObjC的根类NSObjec...
  • qq_23529011
  • qq_23529011
  • 2015年08月16日 11:48
  • 730

Python的引用计数器

引用计数器:         包保持追中内存中的对象,Python使用了引用计数器这个简单的技术。也就是说Python内部记录着所有使用中的对象有多少引用。一个内部跟踪变量,称为一个引用计数器。当对象...
  • liuguiyangnwpu
  • liuguiyangnwpu
  • 2013年07月24日 11:12
  • 3433

初学c++引用计数器

以后会多写些本质论的文章,这样可以更好的引导自己去深入思考。        为什么要用引用计数?         场景:代码里X是一个非常重要的资源,模块A,B,C都有对其指针的引用,那么...
  • u011391093
  • u011391093
  • 2015年03月10日 18:26
  • 364

C++ 引用计数器

今天讲一个实用的东西,C++类的引用计数,不废话直接上代码;#ifdef WIN32 #include #else #include #endif using namespace std; cl...
  • I_can_do_1098
  • I_can_do_1098
  • 2016年12月14日 17:16
  • 233

【IOS学习】之五:引用计数

arc  automatic reference counting   内存管理中对引用采取自动计数。 apple官方文档:    在oc中采用arc机制,让编译器来进行内存管理,在新一代app...
  • Jofranks
  • Jofranks
  • 2014年03月14日 18:28
  • 11925
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++】引用计数器简单示例
举报原因:
原因补充:

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