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.

Syntaxe

primary-expression ( expression-list )

Poznámky

V tomto kontextu primary-expression je prvním operandem a expression-listpřípadně prázdným seznamem argumentů je druhý operand. Operátor volání funkce se používá pro operace, které vyžadují více parametrů. To funguje, protože expression-list se jedná o seznam místo jednoho operandu. 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 );

Vzhledem k odpovídajícímu přetíženým operátoru volání funkce lze tuto syntaxi použít k posunu x souřadnic 3 jednotek a y souřadnic 2 jednotek. 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.

Operátor volání funkce můžete také přetížit pomocí 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é

Přetížení operátoru