[C con Clase] Funciones

amauri d b_duhart en live.com.mx
Mie Ene 23 01:35:22 CET 2013


Gracias, B.Amauri.


Date: Sun, 20 Jan 2013 21:35:14 -0500
From: srd4121 en njit.edu
To: cconclase en listas.conclase.net
Subject: Re: [C con Clase] Funciones

Hola B.Amauri,
2013/1/20 amauri d <b_duhart en live.com.mx>




¡Hola! Yo de nuevo, esta vez preguntando acerca de funciones y uniones, es decir, constructores.
En el capítulo 16, en el problema 16.3, introducen un constructor como el siguiente:
union ejemplo {
    int x;
    double d;
    char cad[8];
    ejemplo(int i) : x(i) {}
    ejemplo(double n) : d(n) {}
    ejemplo(const char *c) {
        strncpy(cad, c, 7);
        cad[7] = 0;
    } 
};Pero, si bien he prestado atención, aún no explicaban qué es esto. 
Entiendo que "func (tipo identificador) : variable(identificador) {}" asigna el parámetro de la función a la variable, pero ¿por qué?



Bueno, hemos explicado un poco acerca de constructores en el capítulo 11 ( http://c.conclase.net/curso/index.php?cap=011#STR_funciones ), pero ciertamente no hemos visto la lista inicializadora: lo que existe entre los dos puntos y la apertura de llave. Si lo prefieres, podemos reescribir lo anterior así:


ejemplo( int i )
{
  x = i;
}
ejemplo( double n )
{
  d = n;
}

La idea tras el constructor es que sirva para preparar cualquier variable (u objeto) para su uso. En genereal, esto implica que la variable debe comenzar en un estado "correcto". Típicamente, lo que uno hace es guardar valores iniciales en los campos o miembros de tal estructura.

Veremos más acerca del tema de constructores cuando lleguemos a la POO, a partir del capítulo 27.

Espero haber aclarado la duda.

Steven


_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130122/c76d93e9/attachment.html>


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