Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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()()
}