elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:30  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  lio con constructores y destructores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: lio con constructores y destructores  (Leído 313 veces)
Javincy

Desconectado Desconectado

Mensajes: 5


Ver Perfil
lio con constructores y destructores
« en: 8 Febrero 2012, 08:32 »

Buenas a todos,

No me entero muy bien con el tema de sobrecarga de constructores en c++, a ver si me podeis dar un poco de claridad en el asunto.


Al declarar un constructor para que reciba un parametro el compilador no me crea uno por defecto... por lo que lo creo yo para que me de servicio...
-------------------------------------------------------
class caballo{
     public:
       caballo(){}
       caballo (int edad){suEdad = edad;}
       ~caballo(){}
     private:
       int suEdad;
};
-------------------------------------------------------
Si en el main creo un objeto caballo(12) utilizando el constructor con parametros todo funciona perfectamente.
Si en el main creo un objeto caballo() sin parametros casca devolviendome "caballo()no es clase"


Algo se me esta escapando...¿tengo que crear un destructor para cada constructor?¿la sintaxis?

Gracias de antemano






En línea
eleon

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: lio con constructores y destructores
« Respuesta #1 en: 8 Febrero 2012, 10:51 »

Los constructores se pueden sobrecargar, es decir, puedes crear varios dentro de una misma clase teniendo todos el mismo nombre pero diferenciándose en el número o tipo de argumentos.

Lo que has hecho es correcto:

Código
class caballo{
    public:
      caballo(){}
      caballo (int edad){suEdad = edad;}
      ~caballo(){}
    private:
      int suEdad;
};

Citar
Si en el main creo un objeto caballo() sin parametros casca devolviendome "caballo()no es clase"

El compilador tomará el constructor "caballo(){}" como el de defecto, y por lo tanto para llamar a este no hay que poner "caballo objeto()" sino "caballo objeto" (sin paréntesis, ahi tu error).

Citar
Algo se me esta escapando...¿tengo que crear un destructor para cada constructor?¿la sintaxis?

A diferencia de los constructores, los destructores no se pueden sobrecargar, se crea uno por clase sin argumentos ni valor de retorno y ese es el que hay para destruir todos los objetos.

Te pongo un ejemplo para que veas cuándo se llama a cada cosa:

Código
#include <iostream>
using namespace std;
 
 
class caballo{
    public:
       caballo (int edad)
       {
           cout << "Llamando al constructor 1." << endl;
           suEdad = edad;
       }
 
       caballo ()
       {
           cout << "Llamando al constructor 2." << endl;
       }
 
       ~caballo()
       {
           cout << "Llamando al destructor." << endl;
       }
 
       int obtenerEdad () {return suEdad;};
   private:
       int suEdad;
};
 
int main()
{
   caballo objeto1 (12);
   caballo objeto2;
 
   cout << "Objeto 1: " << objeto1.obtenerEdad() << endl;
   cout << "Objeto 2: " << objeto2.obtenerEdad() << endl;
 
   cin;
   return 0;
}
 

Aqui te lo dejo sin los mensajes para no liarte:

Código
#include <iostream>
using namespace std;
 
 
class caballo{
    public:
       caballo (int edad){suEdad = edad;};
       caballo () {};
       ~caballo(){};
 
       int obtenerEdad () {return suEdad;};
   private:
       int suEdad;
};
 
int main()
{
   caballo objeto1 (12);
   caballo objeto2;
 
   cout << "Objeto 1: " << objeto1.obtenerEdad() << endl;
   cout << "Objeto 2: " << objeto2.obtenerEdad() << endl;
 
   cin;
   return 0;

Saludos.


« Última modificación: 8 Febrero 2012, 11:08 por eleon » En línea

Javincy

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: lio con constructores y destructores
« Respuesta #2 en: 8 Febrero 2012, 16:18 »

Muchas gracias por el empujon eleon, sin parentesis consigo crear el objeto sin problemas.

Gracias otra vez por la respuesta y un abrazote!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
herencia y destructores c++
Programación C/C++
^kazike^ 1 2,583 Último mensaje 11 Septiembre 2009, 00:27
por Anibal784
Constructores en vb.net???
.NET
Skeletron 3 3,991 Último mensaje 14 Octubre 2009, 03:55
por seba123neo
[C#] Heredar constructores
.NET
Siuto 6 1,907 Último mensaje 3 Octubre 2010, 18:53
por [D4N93R]
constructores en java
Java
sauce19 7 1,518 Último mensaje 5 Septiembre 2011, 00:26
por [Case]
Constructores en Java
Java
Viky30 5 666 Último mensaje 27 Noviembre 2011, 18:27
por satu
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines