Playing around and try implementing a smart pointer (using reference count) in C++