Esto as es mucho ms seguro. Cada instancia de la clase hace su propio new[] y delete[] y tiene su propia zona de memoria reservada, con lo que es ms difcil "equivocarse". La pega de esto es la "ineficiencia". El mismo dato estar repetido en varias clases, con el consiguiente consumo de memoria. De todas formas, salvo para datos excesivamente grandes o aplicaciones muy crticas en memoria, es mejor evitarse problemas definiendo constructores copia y operator = ()