Был задан вопрос о том, что такое класс оболочки C++ , и я думаю, что он дал хороший ответ. Его имя пользователя: GManNickG от переполнения стека при условии, что следующий код с его ответом:C++ new и delete ptr wrapper class
class int_ptr_wrapper
{
public:
int_ptr_wrapper(int value = 0) :
mInt(new int(value))
{}
// note! needs copy-constructor and copy-assignment operator!
~int_ptr_wrapper()
{
delete mInt;
}
private:
int* mInt;
};
Этот код побудило меня с вопросом. Я слышал от нескольких разных людей, что его считают неправильной практикой использовать новые и удалять ключевые слова. Есть ли определенная ситуация, в которой я должен использовать новую или удалить? Также, если я написал код выше, как показано ниже, что считается лучшей практикой?
class int_ptr_wrapper
{
public:
int_ptr_wrapper(int value = 0) :
m_int(&value) {}
private:
int* m_int;
};
В вашей второй версии 'm_int' является оборванным указателем. 'значение' будет уничтожено в конце блока конструктора. Что касается вашего вопроса, просто посмотрите RAII, который ответит на ваш вопрос о голых новостях и удалит плохое. –