Smart pointers in C++ automatically delete the object they point to when the smart pointer goes out of scope. There are different types of smart pointers including std::auto_ptr, deep copy pointers, and reference counted pointers like boost::shared_ptr. Reference counted pointers use a reference counter to track the number of smart pointers pointing to an object. When that count reaches 0, the object is deleted. Smart pointers provide memory management benefits over raw pointers by automatically freeing memory and avoiding issues like dangling pointers.