Supongamos que tengo:C++: ¿Debo inicializar los miembros del puntero asignados en el cuerpo del constructor a NULL?
// MyClass.h
class MyClass
{
public:
MyClass();
private:
Something *something_;
}
// MyClass.cpp
MyClass::MyClass()
{
something_ = new Something();
}
¿Debo inicializar something_ a NULL (o 0) en la lista de inicialización del constructor del constructor MiClase? ¿O no es necesario porque lo estoy asignando en el cuerpo del constructor? ¿Cuál es la práctica recomendada?
¿Por qué no inicializar el puntero en el primer lugar? 'MyClass :: MyClass(): something_ (new Something())' –
¿Esa es la mejor práctica? – User
Siempre prefiere la inicialización a la asignación en el cuerpo del constructor. Y use un puntero inteligente como 'shared_ptr' o' scoped_ptr' en lugar de un puntero nativo para que la limpieza sea automática, incluso en el caso de las excepciones. –