elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Programa queda congelado al usar destructor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Programa queda congelado al usar destructor  (Leído 2,232 veces)
huchoko

Desconectado Desconectado

Mensajes: 97


Ver Perfil WWW
[C++] Programa queda congelado al usar destructor
« en: 17 Noviembre 2018, 18:34 pm »

Pues, siendo nuevo en C++ y ahora estoy con las clases, he estado experimentando con los destructores, pero por una razón que no sé, mi programa se queda congelado.
Acá mi código:
Código
  1. #include <iostream>
  2.  
  3. class doggo
  4. {
  5. private:
  6. std::string name, raza;
  7. public:
  8. doggo(std::string, std::string);
  9. ~doggo();
  10. void mdatos();
  11. void jugar();
  12. };
  13.  
  14. doggo::doggo(std::string _name, std::string _raza)
  15. {
  16. name = _name;
  17. raza = _raza;
  18. }
  19.  
  20. doggo::~doggo()
  21. {
  22. }
  23.  
  24. void doggo::mdatos()
  25. {
  26. std::cout << "Nombre: " << name << std::endl;
  27. std::cout << "Raza: " << raza << std::endl;
  28. }
  29.  
  30. void doggo::jugar()
  31. {
  32. std::cout << "El perro esta jugando" << std::endl;
  33. }
  34.  
  35. int main()
  36. {
  37. doggo perro1("fido", "normal");
  38. perro1.mdatos();
  39. perro1.jugar();
  40. perro1.~doggo(); //objdes
  41. std::cout << "\n";
  42. return 0;
  43. }
  44.  
Saludos  :)


« Última modificación: 17 Noviembre 2018, 23:26 pm por konniskatt » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: [C++] Programa queda congelado al usar destructor
« Respuesta #1 en: 17 Noviembre 2018, 19:00 pm »

Elimina la invocacion del destructor explicita. Deja que el objeto se destruya solo al morir el programa.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: [C++] Programa queda congelado al usar destructor
« Respuesta #2 en: 17 Noviembre 2018, 23:26 pm »

Elimina la invocacion del destructor explicita. Deja que el objeto se destruya solo al morir el programa.
Exacto como bien te han explicado ahí no debes escribir:
Código
  1. perro1.~doggo();
Ya que el destructor de una clase se invoca automáticamente al terminar el programa. Además en los casos en que no usas memoria dinámica no es necesario definir el destructor ya que la clase proporciona uno por defecto (como ocurre con el constructor). En cambio si utilizas memoria dinámica, en el destructor tendrías que liberar esa memoria ya que sino el programa correrá aparentemente sin problemas pero estarás dejando memoria sin liberar.

¿Entonces si quieres aplicar el destructor explícitamente durante el programa? Muy sencillo, creas un método auxiliar con las instrucciones del destructor y en el destructor sólo llamas a ese método auxiliar. Así si quieres usarlo en otro punto del programa sólo deberás invocar al método auxiliar. Pero recuerda, si invocas el método auxiliar por ejemplo para liberar memoria dinámica, tendrás que volver a reservar memoria antes de llegar al final y de que se llame al destructor; sino estarás liberando dos veces la memoria y la segunda vez te producirá un error.

Código
  1. Doggo::miDestructor(){
  2.    // instrucciones del destructor
  3. }
  4.  
  5. Doggo::~Doggo(){
  6.    miDestructor;
  7. }
  8.  
  9. int main(){
  10.    Doggo perro1;
  11.    // otras instrucciones del programa
  12.    perro1.miDestructor();
  13.    // otras instrucciones del programa
  14.    return 0;  // se llama automaticamente a ~Doggo()
  15. }

Aunque estás empezando ya llegarás a trabajar con memoria dinámica por lo que ten presente esto. Ánimo.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema, mi pc se queda congelado. « 1 2 »
Windows
kasen 16 15,270 Último mensaje 17 Octubre 2013, 14:28 pm
por kasen
AYUDA- portatil acer se queda congelado
Windows
ANUBIS1975 2 2,548 Último mensaje 31 Enero 2014, 14:03 pm
por ANUBIS1975
se queda congelado y al reiniciar no muestra nada
Hardware
franfis 3 2,926 Último mensaje 24 Junio 2015, 00:46 am
por Zomkar
Windows 10 se queda congelado
Windows
sora_ori 2 4,062 Último mensaje 21 Febrero 2016, 09:26 am
por Lekim
Kali linux se queda congelado
GNU/Linux
esparzaxabier 1 3,825 Último mensaje 17 Diciembre 2019, 22:12 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines