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.
#include <iostream.h>
#pragma hdrstop
#pragma argsused
class triangulo
{ private:
float d1,d2,d3;
public:
triangulo();
float perimetro(float d1,float d2,float d3);
~triangulo(){cout<<"Se ejecuta el DESTRUCTOR";}
};
triangulo::triangulo() //CONSTRUCTOR
{ cout<<"inicia el constructor"<<endl;
d1=0;
d2=0;
d3=0;
}
float triangulo::perimetro(float d1, float d2, float d3)
{ float perim;
perim=d1+d2+d3;
return perim;
}
int main()
{
triangulo mitriangulo;
int dist1, dist2, dist3;
cout<<"Ingrese las 3 distancias(xx xx xx): ";
cin>>dist1>>dist2>>dist3;
cout<<"el perimetro es "<<mitriangulo.perimetro(dist1,dist2,dist3)<<endl;
system("pause");
return 0;
}
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
El segundo constructor es muy fácil, simplemente sigue tu instinto:
class triangulo
{ private:
float d1,d2,d3;
public:
triangulo();
triangulo(int c1,int c2,int c3,int c4); // sobrecargando constructor
float perimetro(float d1,float d2,float d3);
~triangulo(){cout<<"Se ejecuta el DESTRUCTOR";}
};
triangulo::triangulo() //CONSTRUCTOR
{ cout<<"inicia el constructor"<<endl;
d1=0;
d2=0;
d3=0;
}
triangulo::triangulo(int c1,int c2,int c3,int c4)
{
d1=c1;
d2=c2;
d3=c3;
}
Pon dos cin.get() al final, el primero será solo para comerse el buffer.
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 ?
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.