simple shared pointer implementation in single threaded environment
Your implementation misses to implement pointer semantics in the form of an overloaded operator-&gt;() and operator*().

Isn't that the whole point of a pointer surrogate?