[C con Clase] ayuda operator() por favor!!!!!
Steven Davidson
srd4121 en njit.edu
Mie Ago 19 20:56:17 CEST 2009
Hola David,
David fire wrote:
> hola
> alguien tiene algo de info sobre la sobrecarga del operador "( )".
> ya se que el codigo se hace ilegible, no lo hice yo toy leyendo un
> codigo que tiene eso y necesito algo de info apra poder desifrar el
> codigo. entre ellas este operador es unario? binario? n-ario?
Es n-ario, pero requiere como mínimo un operando, como es lógico.
> se les ocurre alguna forma de saber si se esta usando la sobrecarga
> del operador y no una llamada a funcion? que no signifique saber
> todas las variables del codigo.
Recuerda que una llamada a una función requiere el nombre de la función
o al menos un puntero a la función. Si usamos el operador ()
sobrecargado, entonces el primer operando es un objeto. Por ejemplo,
class Cuadratica
{
private:
double x;
public:
Cuadratica( double xx = 0.0 ) : x(xx) {}
double operator()( double a, double b, double c )
{
return (a*x + b)*x + c;
}
};
Usamos este operador de la siguiente manera:
int main()
{
Cuadratica x(5.0);
cout << "-2x^2 + 3x - 5 = " << x(-2,3,-5) << endl;
cout << "Nota: x = " << x << endl;
return 0;
}
Aquí podemos ver claramente que 'x' es un objeto de la clase
'Cuadratica'. Si 'x' fuese declarada como una función (o un puntero a
una función), entonces aparecería su prototipo por alguna parte.
Obviamente, se permite la sobrecarga del operador () para que las
expresiones aparenten ser llamadas a funciones.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase