Ну, есть разные виды умных указателей. Например:
Вы можете создать класс scoped_ptr
, который будет полезен, когда вы выделяете задачу в блоке кода и хотите, чтобы ресурс автоматически освобождался при запуске из области видимости.
Что-то вроде:
template <typename T>
class scoped_ptr
{
public:
scoped_ptr(T* p = 0) : mPtr(p) {}
~scoped_ptr() { delete mPtr; }
//...
};
Кроме того, вы можете создать shared_ptr
, который действует так же, но ведет подсчет реф. Как только количество ссылок достигнет 0, вы освобождаетесь.
shared_ptr
будет полезен для указателей, хранящихся в контейнерах STL и т. П.
Так что да, вы можете использовать умные указатели для большинства целей вашей программы.
Но подумайте о том, какой умный указатель вам нужен и почему.
Не просто "находите и заменяйте" все указатели, с которыми вы сталкиваетесь.