Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ThronerAXE en 9 Diciembre 2013, 03:09 am



Título: Clases, Constructores y Destructores en C++
Publicado por: ThronerAXE 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. }


Título: Re: Clases, Constructores y Destructores en C++
Publicado por: vangodp 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


Título: Re: Clases, Constructores y Destructores en C++
Publicado por: amchacon 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.


Título: Re: Clases, Constructores y Destructores en C++
Publicado por: ThronerAXE 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 ?


Título: Re: Clases, Constructores y Destructores en C++
Publicado por: vangodp 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.