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

📄 holderptr.h

📁 TGFF省城程序
💻 H
字号:
// Copyright 2000 by Robert Dick.// All rights reserved.#ifndef HOLDER_PTR_#define HOLDER_PTR_/*###########################################################################*/#include "Interface.h"#include <algorithm>#include <typeinfo>namespace rstd {template <typename> struct HolderPtrTraits;/*===========================================================================*//* Smart pointer which copies data instead of automatically releasing it whenassigned from. */template <typename T>class HolderPtr :	public Comps<HolderPtr<T> >,	public Clones<HolderPtr<T> >,	public Swaps<HolderPtr<T> >{	typedef HolderPtr self;public:	typedef T element_type;// Never throws.	explicit HolderPtr(T * p = 0);	HolderPtr(const self & a);	template <typename T2>		HolderPtr(const HolderPtr<T2> & a);	self & operator=(const self & a);	template <class T2>		self & operator=(const HolderPtr<T2> & a);// Throws only if destructor of object pointed to throws.	~HolderPtr();// Interface	void rswap(self & hp) throw () { rstd::rswap(data_, hp.data_); }	self * clone() const { return new self(*this); }	comp_type comp(const self & a) const;	T & operator*() const throw () { return *data_; }	T * operator->() const throw () { return data_; }	T * get() const throw () { return data_; }// Never throws.	T * release();// Never throws.	void reset(T * p = 0);private:		T * data_;};/*###########################################################################*/#include "HolderPtr.cct"}#endif

⌨️ 快捷键说明

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