Sdílet prostřednictvím


Volání funkcí (C++)

Operátor volání funkce je při vyvolání pomocí závorek binárním operátorem.

primary-expression ( expression-list )

Poznámky

V tomto kontextu primary-expression je první operand a expression-list, které by mohly mít prázdný seznam argumentů, je druhý operand.Operátor volání funkce se používá pro operace, které vyžadují více parametrů.Toto funguje, protože expression-list je uveden seznam namísto s jedním operandem.Operátor volání funkce musí být nestatická členská funkce.

Operátor volání funkce nemění v případě přetížení způsob, jakým jsou funkce volány. Místo toho upravuje, jak se operátor interpretuje při použití na objekty daného typu třídy.Například následující kód by obvykle neměl význam:

Point pt;
pt( 3, 2 );

Zadaný operátor odpovídající přetížených volání funkce, však tuto syntaxi lze použít k posunutí x koordinovat 3 jednotky a y koordinovat 2 jednotky.Následující kód ukazuje takovou definici:

// 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 );
}

Je třeba poznamenat, že operátor volání funkce je použit na název objektu, nikoli na název funkce.

Také můžete použít přetížení operátoru volání funkce použitím ukazatele na funkci (nikoli samotná funkce).

typedef void(*ptf)();
void func()
{
}
struct S
{
   operator ptf()
   {
      return func;
   }
};

int main()
{
   S s;
   s();//operates as s.operator ptf()()
}

Viz také

Referenční dokumentace

Přetížení operátoru