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.
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


0