career_cup_13_9

Write a smart pointer (smart_ptr) class.
Smart_ptr is the same as a normal pointer, but it provides safety via
automatic memory. It avoids dangling pointers, memory leaks, allocation
failures etc. The smart pointer must main- tain a single reference
count for all instances.