Wywołanie funkcji (C++)
Operator wywołania funkcji, wywoływane przy użyciu nawiasów, jest operator binarny.
primary-expression ( expression-list )
Uwagi
W tym kontekście primary-expression jest pierwszy argument i expression-list, drugi argument jest prawdopodobnie puste listę argumentów.Operator wywołania funkcji jest używana w operacjach wymagających liczba parametrów.To działa, ponieważ expression-list znajduje się lista zamiast jeden argument.Operator wywołania funkcji musi być funkcja niestatycznego członka.
Operator wywołania funkcji, gdy jest przeciążona, nie Modyfikuj, jak funkcje są wywoływane; zamiast modyfikuje, jak operator ma być interpretowana w przypadku obiektów klasy danego typu.Na przykład następujący kod zwykle będzie mieć znaczenia:
Point pt;
pt( 3, 2 );
Biorąc pod uwagę operator odpowiednie przeciążenia wywołania funkcji, jednak tej składni może służyć do przesunięcia x koordynacji 3 jednostek i y koordynacji 2 jednostki.Poniższy kod pokazuje tych definicji:
// 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 );
}
Należy pamiętać, że operator wywołania funkcji jest stosowane do nazwy obiektu, nie nazwa funkcji.
Można również przeciążać operator wywołania funkcji przy użyciu wskaźnik do funkcji (zamiast samej funkcji).
typedef void(*ptf)();
void func()
{
}
struct S
{
operator ptf()
{
return func;
}
};
int main()
{
S s;
s();//operates as s.operator ptf()()
}