Есть 3 смарт указателя, auto_ptr, unique_ptr и shared_ptr (а ,ну так то есть и 4 - weak_ptr , но пусть он гуляет Уася).
auto_ptr - забудь, он старый, так еще и спецификатор по исключению старый юзат. Но, я расскажу про него))(((+(((+(((
А, ну есть еще shared_ptr и unique_ptr , так уж и быть, скажу. Их можно юзать, если компилятор поддерживает С++11 ... Ну ок, ... Скажу еще что при shared_ptr безопасно юзать, когда имеется массивы со смврт указателями, и может иметь несколько указателец на одну область ... А вот auto_ptr сделает дамп в случаен, если будет несколько указателец на 1 объект, и не дай Бог 1 удалится ... У unique_ptr почти такая же фигня, только он умнее, и выдаст ошибкк компиляции! И да, его норм юзать , когда ему присваивается ВРЕМЕННЫЙ объект.
Вот примерно все, что я понял.