C/Visual C - Dudas con clases de c++

 
Vista:

Dudas con clases de c++

Publicado por Bea (6 intervenciones) el 18/02/2007 13:18:44
Hola que tal?
No sabía si preguntar aquí o que porque no hay toppic de C++, a ver si me podéis ayudar. Estoy Estudiando el módulo de programación, y tengo bastantes dudas, y con el profesor no me entero, jejeje. Bueno os paso una clase que estamos haciendo y os pregunta a ver si alguien me puede ayudar:
Es la clase ángulo, y lo que hace es sumarse a sí mismo un angulo, restarlo, etc, varias cosas: os pongo los prototipos y algunas funciones:

class Angulo
{ private:
double A;
public:
//----Constructores y operadores de asignación---
Angulo(double D =0.0);
Angulo & operator= (double D);
//----Operadores aritméticos autoperadores ariméticos-------
Angulo & operator+=(const Angulo &Ang);
Angulo & operator-=(const Angulo &Ang);
Angulo & operator*=(double D);
Angulo & operator/=(double D);
friend ostream&operator<<ostream>=0)
{ if (D>= 720) A = fmod(D,360);
else
A=(D>=360)? D-360: D;
}
else
{ if (D<360>=360) A -=360;
return *this;
};

i

inline Angulo operator +(const Angulo &Ang1, const Angulo &Ang2)
{ Angulo Aux(Ang1);
return (Aux+= Ang2);
};

Mi primera duda es: El constructor (la primera función que he puesto), el profesor nos dijo que según como estaba hecho nos sirve de convertidor de un double a un
ángulo, vale eso parece que es cierto. pero si véis la función operator +=,
como parámetro de entrada se le pasa esto: const Angulo &Ang
Si le pasas un ángulo todo va bien, se lo sumas a sí mismo y todo bien; pero si le pasas un double, te lo convierte, y no entiendo muy bien como lo hace. Llama al constructor de la clase y lo convierte??? o como funciona??? Otra de mis dudas viene con la función operator +, el profesor, la puso friend, es decir k no pertenece a la clase xo puede urgar en ella. vale, porqué esta no se puede poner sin friend??? En el compilador de borland, si la pones sin friend te dice de error: must be declared with one parameter, que quiere decir esto???
Bueno estás son mis dudas, a ver si me podéis ayudar, porque me estoy desesperando y no es plan. Muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dudas con clases de c++

Publicado por fernando.gomez (1603 intervenciones) el 19/02/2007 03:48:08
Hola,

1. El contructor pide una referencia constante a un objeto de tipo Angulo. El compilador intenta convertir el double a un Angulo y se encuentra conque lo puede hacer porque el constructor pide un double. Entonces lo convierte en forma automática. Esto es así a menos que pongas la palabra "explicit" como modificador del constructor.

2. Er... la sobrecarga del operador + en ningún momento la pone como friend, según el código que muestras. Ahora bien, al declarar dicha sobrecarga fuera de la clase hace que la operación se de entre dos parámetros. Si la hubieras hecho dentro de la clase, entonces operaría entre un parámetro externoy "this". De ahí que se prefiera el declararla fuera, porque a final de cuentas no operas con miembros de la clase.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar