[C con Clase] Duda sobre clases

Miguel Alejandro Jimenez Ramirez cerberbero en gmail.com
Lun Mayo 20 19:51:59 CEST 2013


Muchas gracias por la ayiuda , la verdad son de una pagina:
http://www.interqiew.com/tests?type=cpp
Estoy preparandome para pruebas de trabajo ya que quiero trabajar como
desarrollador de sistemas embebidos.

Si tienes mas informacion sobre este tema estaria muy agradecido. Y pues
seguire con las preguntas , si tengo dudas las enviare. Gracias nuevamente


2013/5/20 Salvador Pozo <salvador en conclase.net>

> Hola:
>
> Antes de nada, que sepas que no molestas en nada con tus preguntas.
> Pregunta todo lo que quieras.
>
> MAj> Buneo creo que lo entendi , es que no habia visto que en la parte
> privada
> MAj> de la clase derivada los objetos eran del tipo de la clase A.
>
> Yo también he tardado un rato en verlo. :)
>
> MAj> Lo que tendria que aclarar seria el orden aver si lo que digo es
> cohereente.
> MAj> Al declarar el objeto b de tipo de la clase derivada B y enviando como
> MAj> parametro 5. Claro esta todo en corchetes para que el comilador
> entienda
> MAj> que lo que vamos a imprimir esta en los destructores.
>
> No importa tanto el orden en que se crean como en el que se destruyen los
> objetos.
>
> Efectivamente, podemos suponer que primero se crean los datos
> correspondientes a la clase base A, de la que se deriva la clase B. Como no
> es necesario especificar un constructor de la clase base, puesto que tiene
> uno con un parámetro con un valor por defecto, esa invocación al
> constructor de la clase base no aparece en el constructor de B. (Espero no
> haber cometido errores en este párrafo). :)
>
> El constructor de B podría quedar de este modo (por lo que se refiere a
> este ejemplo, al menos):
>
>     B(int n) : A(2), m_x(m_i + 1) , m_a(n) {}
>
> El orden en que se crean los objetos es el mismo en que aparecen las
> llamadas a los constructores.
>
> Puedes probar a cambiar el orden, y verás que el orden permanece, pero
> obtendrás mensajes de aviso diciendo que el orden de construcción no es el
> mismo en que lo has escrito.
>
> Una vez construido el objeto B, los datos miembro tienen los valores
> siguientes:
>
> m_i (de la clase base) = 2
> m_x = 3
> m_a = 5
>
> Ahora vamos a los destructores.
>
> Cuando se invoca al destructor de B, primero se muestra el valor de m_i,
> ya que lo primero que hay es un cout << m_i, es decir, "2".
>
> Luego se decrementa m_i, que pasa a valer 1.
>
> Hasta aquí no hemos destruido nada todavía.
>
> Ahora es cuando se destruyen los miembros de b, primero m_x, y se muestra
> el valor "3", luego m_a, y se muestra el valor "5".
>
> Finalmente, se destruye la clase base A de B, y se muestra m_i, que ahora
> vale "1".
>
> El poner la sentencia:
>     { B b(5); }
>
> Entre corchetes es para que el bloque se ejecute, es decir, el objeto b se
> crea y al finalizar el bloque (entre corchetes), se destruye.
>
> Una pregunta: ¿de dónde sacas estos programas? Son geniales. :)
>
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> _______________________________________________
> 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
>



-- 
MIGUEL ALEJANDRO JIMENEZ R.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130520/f746fe84/attachment.html>


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