[C con Clase] Inicializacion de punteros. Son equivalentes esta expresiones?

Steven Davidson srd4121 en njit.edu
Jue Ene 29 20:49:24 CET 2009


Hola Ferrán,

Ferran Ferri wrote:
> Hola, mirando una documentacion me encuentro con esto:
> 
> CSample * pSample(new CSample);
> 
> Y me preguntaba si esa expresion es equivalente a:
> 
> CSample * pSample = new CSample();
> 
> En principio el operador new devuelve una referencia a CSample, pero
> la forma de arriba no recuerdo haberla visto.
> 

La primera forma es incorrecta, mientras que la segunda es la correcta, 
aunque en C++ no se agregan los paréntesis para invocar el constructor 
sin parámetros. Esto es,

CSample * pSample = new CSample;

La única manera de que la primera forma sea correcta es que uno no 
declare un puntero. Por ejemplo,

CSample oSample( new CSample );


Espero haber aclarado la duda.

Steven




Más información sobre la lista de distribución Cconclase