[C con Clase] C++ constructores.

Armando B. VERA abvera en arnet.com.ar
Sab Jul 11 13:51:20 CEST 2009


El Viernes, 10 de Julio de 2009 14:32, Edmundo Cuadriello Narvaez escribió:
> Holas Marta,
>  
> bien la verdad no es lo mas recomendable, pero si asi lo quieres,
>  
> te cambie un poco tu clase triangulo dale una revisada cualquier duda, me
> comentas. . 
> te mande los archivos .cpp y el .h  ademas del .dsp y .dsw (para el VC++
> 6.0 estos dos ultimos) 
> recibe un saludo
>  
> ATTE:
> ISC Edmundo Cuadriello Narvaez
> Software Engineer
> C++, X++, C#, JAVA programmer.
> Tel: 33-36899320
> Cel: 33-13555312
> ecnarvaez en yahoo.com
> ecnarvaez en hotmail.com
> "All for Linux, and Linux for every one"


No he resistido a mirar tu triangulo y hay algunas dudas que tengo sobre tus 
respuestas:

---------------------- sacado de los adjuntos ------------------------
>   //estara bien que mande a introducir valores con el constructor?
>   //ANSWER:  NO, NO ES CORRECTO. 
>   //esto lo deberias de hacer en el main()
----------------------------------------------------------------------
La funcion de un constructor es precisamente eso, la correcta inicializacion de las variables miembros de un objeto. El compilador proporcionara un inicializador de oficio, en el mejor de los casos. En este caso lado1, lado2 y lado3 valdran 0. Entonces ¿por que no proporcionar uno con valores por defecto? por ejemplo, el de un triangulo equilatero.

una declaracion como: "truangulo m" se inicializara con esos valores que es mejor que tengan valores conocidos que desconocidos. Si el compilador no proporciona un constructor de oficio para la clase, las variables miembros, mejor dicho, las variables tendran basura, consecuencia del uso de esas zonas de memoria por otras aplicaciones.

Me parece que es util un "constructor por defecto", un "constructor general" con verificacion de parametros (comprobar si lado3 es < que lado2+lado1) y un "constructor de copia" util para hacer por ejemplo:

triangulo m(2,4,3);
triangulo n=m;
o 
triangulo n(m);

la declaracion del constructor de oficio tendria esta forma

triangulo(const triangulo&); // luego hay que definirlo.

Otra de las observaciones  que puedo hacer es que, como el perimetro y el area son propiedades del triangulo (hay muchas mas, les aseguro, como los puntos notables, la clasificacion segun lados y angulos, etc) se podria incluir como metodos de la clase. (aunque podria formar parte de una clase virtual y ser el trinagulo una clase derivada, pero bueno, lo paramos ahi) 

Disculpenme, pero no pude resistir a meter mis narices :-)


-- 
Armando B. VERA
abvera en arnet.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090711/58b86ba6/attachment.html>


Más información sobre la lista de distribución Cconclase