Llamada de función (C++)
El operador de llamada a función, invocado mediante paréntesis, es un operador binario.
Sintaxis
primary-expression ( expression-list )
Comentarios
En este contexto, primary-expression
es el primer operando, y expression-list
(una lista de argumentos que posiblemente esté vacía) es el segundo operando. El operador de llamada a función se utiliza para las operaciones que requieren varios parámetros. Esto funciona porque expression-list
es una lista en lugar de un solo operando. El operador de llamada a función debe ser una función miembro no estática.
El operador de llamada a función, cuando está sobrecargado, no modifica la forma de llamar a las funciones; en su lugar, modifica cómo debe interpretarse el operador cuando se aplica a objetos de un tipo de clase especificado. Por ejemplo, el código siguiente normalmente no tendría sentido:
Point pt;
pt( 3, 2 );
Pero, con un operador sobrecargado de llamada a función adecuado, esta sintaxis se puede usar para desplazar 3 unidades la coordenada x
y 2 unidades la coordenada y
. En el código siguiente se muestra esa definición:
// function_call.cpp
class Point
{
public:
Point() { _x = _y = 0; }
Point &operator()( int dx, int dy )
{ _x += dx; _y += dy; return *this; }
private:
int _x, _y;
};
int main()
{
Point pt;
pt( 3, 2 );
}
Tenga en cuenta que el operador de llamada a función se aplica al nombre de un objeto, no al nombre de una función.
También puede sobrecargar el operador de llamada de función mediante un puntero a una función (en lugar de a la función en sí).
typedef void(*ptf)();
void func()
{
}
struct S
{
operator ptf()
{
return func;
}
};
int main()
{
S s;
s();//operates as s.operator ptf()()
}
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de