Wywołanie funkcji (C++)
Operator wywołania funkcji, wywoływany przy użyciu nawiasów, jest operatorem binarnym.
Składnia
primary-expression ( expression-list )
Uwagi
W tym kontekście primary-expression
jest to pierwszy operand, a expression-list
, prawdopodobnie pusta lista argumentów, jest drugim operandem. Operator wywołania funkcji jest używany w przypadku operacji wymagających wielu parametrów. Działa to, ponieważ expression-list
jest to lista zamiast pojedynczego operandu. Operator wywołania funkcji musi być niestatyczną funkcją składową.
Operator wywołania funkcji, gdy jest przeciążony, nie modyfikuje sposobu wywoływania funkcji; zamiast tego modyfikuje sposób interpretowania operatora w przypadku zastosowania do obiektów danego typu klasy. Na przykład poniższy kod zwykle będzie bez znaczenia:
Point pt;
pt( 3, 2 );
Biorąc jednak pod uwagę odpowiedni przeciążony operator wywołania funkcji, ta składnia może służyć do przesunięcia x
współrzędnych 3 jednostek i y
współrzędnych 2 jednostek. Poniższy kod przedstawia taką definicję:
// 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 stosowany do nazwy obiektu, a nie nazwy funkcji.
Operator wywołania funkcji można również przeciążyć za pomocą wskaźnika do funkcji (a nie samej funkcji).
typedef void(*ptf)();
void func()
{
}
struct S
{
operator ptf()
{
return func;
}
};
int main()
{
S s;
s();//operates as s.operator ptf()()
}
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla