Clase Derivada; Listas de Inicializacion.

Iniciado por necro1991, 11 Octubre 2010, 04:34 AM

0 Miembros y 1 Visitante están viendo este tema.

necro1991

Hola buenas tardes tengo una tarea donde tengo que usar una lista de inicializacion en clases... yo tube que faltar esa clase por que me operaron, entonces no he tenido tiempo por exceso de tareas para ir a asesoria... me gustaria que me ayudaran a saber como hacer una lista de inicializacion en una clase derivada:


Citar
class satelital: public Telefono{
private:
   char compa;
public:
   satelital(){}
   ~satelital(){}
   char Getcompa();
   void Setcompa(char);
};

En donde lo declaro ¿? y Como ¿?.. Y para que son ¿? espero me puedan ayudar :(
...♫Las Cosas Que Haces En Vida Resuenan En La Inmortalidad♫...

Littlehorse

No se puede responder en forma especifica porque el ejemplo de una lista de inicialización puede variar dependiendo de como sea la estructura de las clases (tanto de las derivadas u de las clases base)
Ademas, para explicarlas primero hay que partir sobre la idea de como funcionan los constructores y como se maneja la cadena de llamadas en la herencia. Es un tema largo y bastante extenso.

Te dejo algunos ejemplos, así se vería una lista de inicialización en una clase:

Código (cpp) [Seleccionar]
class Yourclass
{
        public:
                Yourclass() : yourPrivateData( 5 ) //Inicializa yourPrivateData a 5
                { }

        private:
                int yourPrivateData;
};


Funciona con datos primitivos como un entero aunque en esos casos equivale a una asignación. Por supuesto también funciona con tipos built-in, y en esos casos hay una diferencia de rendimiento debido a que se omite la creación de un objeto temporal (como si sucede con la asignación en los constructores).

Igualmente las listas no solo se utilizan por esa cuota extra de rendimiento, en algunos casos son necesarias, por ejemplo cuando tenes constantes u referencias ya que en esos casos la inicialización es obligatoria.

Este es un ejemplo de una lista de inicialización en una clase derivada en donde el constructor de la clase base requiere una cadena como argumento:

Código (cpp) [Seleccionar]
class YourClass : public YourParent
{
        YourClass() : YourParent( "Cad" )
        {}
};


En conclusión, lo que te recomiendo es que busques en las chinchetas un libro de C++ para estudiar el tema, o que busques en Google algunos links que expliquen el tema en forma detallada, y como ultimo que pidas los apuntes de la clase del dia que no pudiste asistir.
Como dije al principio, el tema es largo como para explicarlo de corrido en un solo post, así que primero trata de hacer lo que te recomendé y si tenes alguna nueva duda sobre el mismo tema, la posteas en este hilo.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

necro1991

Cita de: Littlehorse en 11 Octubre 2010, 05:31 AM
No se puede responder en forma especifica porque el ejemplo de una lista de inicialización puede variar dependiendo de como sea la estructura de las clases (tanto de las derivadas u de las clases base)
Ademas, para explicarlas primero hay que pa.....


Gracias! am tengo una pregunta  :-[
Entonces mi clase con lista de inicializacion quedaria asi masomenos: ¿?

Citar
class celular: public Telefono{
private:
    int ext;
public:
    celular(int ival=1):m_ival(ival){}
    ~celular(){}
    int Getext();
    void Setext(int);

void imprimir();
};
...♫Las Cosas Que Haces En Vida Resuenan En La Inmortalidad♫...