[C con Clase] para que strcpy

rodolfo rosso paz rodolforossopaz en hotmail.com
Vie Jun 8 17:17:08 CEST 2007


Hola a todos.-

Gracias Steven, como siempre aclarado el punto, aunque en esta ocasion creo 
que
mi pregunta no estuvo completa, me falto esto.

Estoy revisando un programa que sobrecarga operadores para una
clase llamada Cadena.

Programa:
int main()
{
   Cadena c1( "feliz" );


nota mia: esto invoca al constructor de conversion
          porque "feliz" es una constante literal (creo)
          y debe ser convertida a tipo Cadena


Programa:
// el constructor de conversión convierte un char * en una Cadena
Cadena::Cadena( const char *c )
   : longitud( ( c != 0 ) ? strlen( c ) : 0 )
{
   cout << "Constructor de conversion: " << c << '\n';
   estableceCadena( c );       // llama a la función de utilidad

} // fin del constructor de conversión Cadena



// función de utilidad invocada por el constructor
void Cadena::estableceCadena( const char *cadena2 )
{
   ptrC = new char[longitud + 1]; // asigna memoria

   if ( cadena2 != 0 )               // si cadena2 no es un apuntador nulo
      strcpy( ptrC, cadena2 );    // copia la literal a un objeto
   else                                   // si no
      ptrC[ 0 ] = '\0';               // cadena vacía

} // fin de la función estableceCadena


nota mia: ¿ porque es necesario strcpy( ptrC, cadena2 )?
          porque no simplemente copio el puntero de cadena2 en ptrC
          hacieno ptrC = cadena2;
          para que ptrC apunte a la direccion de "feliz", que no esta usando
          nadie, ¿o si?.
          ¿ para que necesito crear otra cadena en otro lugar ?
          ¿ que hay de malo con el lugar que ocupa "feliz" ?

Disculpen la insolencia de las preguntas, pero como dicen por ahi,
"la ignorancia es audaz" je, je.

gracias de nuevo, y que Dios los bendiga.

Rodolfo

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger: 
http://messenger.latam.msn.com/





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