Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: necro1991 en 11 Octubre 2010, 04:34 am



Título: Clase Derivada; Listas de Inicializacion.
Publicado por: necro1991 en 11 Octubre 2010, 04:34 am
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 :(


Título: Re: Clase Derivada; Listas de Inicializacion.
Publicado por: 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 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
  1. class Yourclass
  2. {
  3.        public:
  4.                Yourclass() : yourPrivateData( 5 ) //Inicializa yourPrivateData a 5
  5.                { }
  6.  
  7.        private:
  8.                int yourPrivateData;
  9. };

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
  1. class YourClass : public YourParent
  2. {
  3.        YourClass() : YourParent( "Cad" )
  4.        {}
  5. };

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!


Título: Re: Clase Derivada; Listas de Inicializacion.
Publicado por: necro1991 en 11 Octubre 2010, 05:45 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();
};