智能指针代码:
// 引用计数器类 用于存储指向同一对象的指针数
template<typename T>
class Counter
{
private:
// 数据成员
T* ptr; // 对象指针
int cnt; // 引用计数器
// 友元类声明
template<typename T>
friend class SmartPtr;
// 成员函数
// 构造函数
Counter(T* p) // p为指向动态分配对象的指针
{
ptr = p;
cnt = 1;
}
// 析构函数
~Counter()
{
delete ptr;
}
};
// 智能指针类
template<typename T>
class SmartPtr
{
private:
// 数据成员
T* ptr;
Counter<T>* ptr_cnt;
public:
// 普通构造函数 初始化计数类
SmartPtr(T* p) : ptr(p), ptr_cnt(new Counter<T>(p))
{
}
// 拷贝构造函数
SmartPtr