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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Clases, Constructores y Destructores en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Clases, Constructores y Destructores en C++  (Leído 5,730 veces)
ThronerAXE

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Clases, Constructores y Destructores en C++
« en: 9 Diciembre 2013, 03:09 am »

Buenas.
Estoy empezando a programar en c++ y estoy aprendiendo parte de las clases, constructores y destructores... en fin. Tengo un codigo que aplica estas 3 cositas. El ejercicio me pide 2 constructores, uno con la informacion de las distancias y otro sin parametros (sobrecarga). Yo hize uno de esos constructores pero no estoy muy seguro cual de los 2 fue el que logre hacer(supongo que es el que no tiene parametros), ahora lo q nose muy bien es como hacer el otro constructor. Ademas a eso, acepto cualquier sugerencia con respecto al codigo que hize y por ultimo, en el codigo del destructor le deje un mensaje para que mostrara ¿ existe algun codigo que haga que pare el programa para poder visualizar el mensaje, ya que use el system("pause") y el cin.get() y ninguno me funciono.
NOTA: el programa recibe 3 distancias y calcula el perimetro.
Código
  1. #include <iostream.h>
  2. #pragma hdrstop
  3. #pragma argsused
  4.  
  5. class triangulo
  6. {     private:
  7.               float d1,d2,d3;
  8.      public:
  9.               triangulo();
  10.               float perimetro(float d1,float d2,float d3);
  11.               ~triangulo(){cout<<"Se ejecuta el DESTRUCTOR";}
  12.  
  13. };
  14.  
  15. triangulo::triangulo() //CONSTRUCTOR
  16. { cout<<"inicia el constructor"<<endl;
  17. d1=0;
  18. d2=0;
  19. d3=0;
  20. }
  21. float triangulo::perimetro(float d1, float d2, float d3)
  22. { float perim;
  23.  perim=d1+d2+d3;
  24.  return perim;
  25. }
  26.  
  27. int main()
  28. {
  29.  triangulo mitriangulo;
  30.  int dist1, dist2, dist3;
  31.  cout<<"Ingrese las 3 distancias(xx xx xx): ";
  32.  cin>>dist1>>dist2>>dist3;
  33.  cout<<"el perimetro es "<<mitriangulo.perimetro(dist1,dist2,dist3)<<endl;
  34.  system("pause");
  35.  return 0;
  36. }


En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Clases, Constructores y Destructores en C++
« Respuesta #1 en: 9 Diciembre 2013, 04:54 am »

existe unas cuantas formas de hacer el constructor.
Esta el constructor por defecto que si no le pasas parámetros el programa elige ese.
Pero si le pasa los parámetros a la hora de criar el objeto entonces el programa lo elige el otro.
Pero esta un 3º constructor que no viene al caso y no se si existe mas que se llama el constructor de copia.
Sirve para crear un objeto igual que el otro.
Imagines que todos viven en el mismo país y al crear un objeto no quieres introducir país para cada objeto, pues ahí es donde entra el constructor de copia.
Los 3 ejemplos en vídeos muy buenos sobre el tema los tiene aquí:
http://minidosis.org/C++/Clases/El%20Constructor%20por%20Defecto/
http://minidosis.org/C++/Clases/El%20Constructor/
http://minidosis.org/C++/Clases/El%20Constructor%20de%20Copia/
Aquí también el destructor:
http://minidosis.org/C++/Clases/El%20Destructor/

¡Mucha suerte!  :P


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Clases, Constructores y Destructores en C++
« Respuesta #2 en: 9 Diciembre 2013, 18:02 pm »

El segundo constructor es muy fácil, simplemente sigue tu instinto:

Código
  1. class triangulo
  2. {     private:
  3.              float d1,d2,d3;
  4.     public:
  5.              triangulo();
  6.              triangulo(int c1,int c2,int c3,int c4); // sobrecargando constructor
  7.              float perimetro(float d1,float d2,float d3);
  8.              ~triangulo(){cout<<"Se ejecuta el DESTRUCTOR";}
  9.  
  10. };
  11.  
  12. triangulo::triangulo() //CONSTRUCTOR
  13. { cout<<"inicia el constructor"<<endl;
  14.  d1=0;
  15.  d2=0;
  16.  d3=0;
  17. }
  18.  
  19. triangulo::triangulo(int c1,int c2,int c3,int c4)
  20. {
  21.  d1=c1;
  22.  d2=c2;
  23.  d3=c3;
  24. }

Pon dos cin.get() al final, el primero será solo para comerse el buffer.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ThronerAXE

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Clases, Constructores y Destructores en C++
« Respuesta #3 en: 11 Diciembre 2013, 00:48 am »

ahh en la parte del system("pause") y el cin.get() ellos me funcionan dentro del programa, pero por ejemplo en el caso particular del destructor, estoy dando la salida del mensaje "se ejecuta el DESTRUCTOR" mi pregunta es ¿ como hago para usar alguno de esos codigos para q me pare el programa en el momento en q se ejecuta el destructor para poder ver el mensaje ?
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Clases, Constructores y Destructores en C++
« Respuesta #4 en: 11 Diciembre 2013, 02:34 am »

Una forma de pausar sin usar el system es usar: cin.ignore();
Se utiliza con la misma librería iostream
Funciona como mas o menos como system("pause"), o sea espera a que se pulse enter.
Es bastante portable al no depender de windows.h o de otras librerías ya que el iostream es standar. :D
El único problema es que al presionar enter te hace pasa a una nueva linea, si no te importa buena es.
« Última modificación: 11 Diciembre 2013, 02:39 am por vangodp » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines