#include "Ptr.h" Ptr::Ptr(Pekad *pek):pointer(pek), count((pek)?new int(1):0){ } Ptr::Ptr(const Ptr& other):pointer(other.pointer), count(other.count){ if (pointer) (*count)++; } Ptr::~Ptr(){ if (pointer && --*count == 0){ delete count; delete pointer; } } Ptr& Ptr::operator=(const Ptr& other){ if (pointer != other.pointer){ if (pointer && --*count == 0){ delete count; delete pointer; } pointer = other.pointer; count = other.count; if (pointer) ++*count; } return * this; }