⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countptr.h

📁 自定义的智能指针类
💻 H
字号:
#ifndef _COUNTPTR_H_
#define _COUNTPTR_H_

template<typename T>
class CountedPtr
{
private:
	T *	ptr;
	long * count;
public:
	explicit CountedPtr(T* p=0)
		:ptr(p),count(new long(1)){}

		//throw()表示此函数不抛出异常
		//throw(...)表示此函数可以抛出异常
		//throw(type)表示此函数抛出type类型的异常

	CountedPtr(const CountedPtr<T> & p) throw()
		:ptr(p.ptr),count(p.count)
	{
		++*count;
	}
 
	~CountedPtr() throw()
	{
		dispose();
	}

	CountedPtr<T> & operator=(const CountedPtr<T> & p) throw()
	{
		if(this!=&p)
		{
			dispose();
			ptr=p.ptr;
			count=p.count;
			++*count;
		}
		return *this;
	}

	T& operator*() const throw()
	{
		return *ptr;
	}
	T* operator->() const throw()
	{
		return ptr;
	}
private:
	void dispose()
	{
		if(--*count==0)
		{
			delete count;
			delete ptr;
		}
	}
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -