İşlev Çağrısı (C++)

Parantez kullanılarak çağrılan işlev çağrısı işleci, ikili bir işleçtir.

Sözdizimi

primary-expression ( expression-list )

Açıklamalar

Bu bağlamda, primary-expression ilk işlenendir ve expression-listbüyük olasılıkla boş bir bağımsız değişken listesi ikinci işlenendir. İşlev çağrısı işleci, bir dizi parametre gerektiren işlemler için kullanışlıdır. Bu kullanışlılık, tek bir işlenen yerine liste olmasından expression-list kaynaklanır. C++23'den önce işlev çağrısı işlecinin statik olmayan bir üye işlevi olması gerekiyordu. C++23 ve sonraki sürümlerde statik bir üye işlevi olabilir. Daha fazla bilgi için bkz . Statik işlev çağrısı işleci.

İşlev çağrısı işleci, aşırı yüklendiğinde işlevlerin çağrılma biçimini değiştirmez; bunun yerine, işlecin belirli bir sınıf türünden nesnelere uygulandığında nasıl yorumlanacağını değiştirir. Örneğin, aşağıdaki kod genellikle anlamsız olacaktır:

Point pt;
pt( 3, 2 );

Ancak, uygun bir aşırı yüklenmiş işlev çağrısı işleci verildiğinde, bu söz dizimi koordinat 3 birim ve x koordinat 2 birim arasında kaydırmak y için kullanılabilir. Aşağıdaki kod, bu tür bir tanımı göstermektedir:

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

İşlev çağrısı işlecinin bir işlevin adına değil, bir nesnenin adına uygulandığını unutmayın.

İşlev çağrısı işlecini bir işlev işaretçisi kullanarak da aşırı yükleyebilirsiniz (işlevin kendisi yerine).

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

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

Ayrıca bkz.

Statik işlev çağrısı işleci
İşleç Aşırı Yüklemesi