Add smartpointer.cpp