İşlev işaretçileri anlamı nedir? | Netgez.com
SORU
7 NİSAN 2010, ÇARŞAMBA


İşlev işaretçileri anlamı nedir?

Sorun işlev işaretçileri yarar görüyorum. Bazı durumlarda yararlı olabilir sanırım. (sonuçta onlar da var), ama daha iyi ya da kaçınılmaz bir işlev işaretçisi kullanmak olduğu bir durum düşünemiyorum.

İşlev işaretçileri iyi kullanın (C C) ' in bazı örnek verebilir misiniz?

CEVAP
7 NİSAN 2010, ÇARŞAMBA


En örnekler kurutangeri aramaları: f() bazı özel görev için* *3 ve f() g() çağrıları başka bir işlev adresi geçiyor. bir işlev çağrısı f() h() adresi yerine geçersen f() h() yerine çağırır.

Temel olarak, bu bir yoldurparametrizefonksiyon: kendi davranışının bir parçası f() ama geri arama fonksiyonu içine içine kodlanmış değildir. Arayanlar f() farklı farklı geri arama işlevleri geçerek davranır. Klasik bir karşılaştırma işlevi için bir işaretçi olarak sıralama onun kıstas alır C standart kütüphanesinden 12**.

C , bu genellikle yapılırişlevi nesneleriayrıca funktorlar). Bu eğer bir işlev olsaydı, onları aramak işlev çağrısı operatörü aşırı yükleme nesneleridir. Örnek:

class functor {
  public:
     void operator()(int i) {std::cout << "the answer is: " << i << '\n';}
};

functor f;
f(42);

Bunun arkasındaki fikir, bir işlev işaretçisi aksine, işlev nesne bir algoritma, ama aynı zamanda veri sadece taşıyabilir

class functor {
  public:
     functor(const std::string& prompt) : prompt_(prompt) {}
     void operator()(int i) {std::cout << prompt_ << i << '\n';}
  private:
     std::string prompt_;
};

functor f("the answer is: ");
f(42);

Başka bir avantajı da bazen işlev işaretçileri telefon görüşmelerinizi daha işlev çağrıları satır içi nesneler için daha kolay olmasıdır. Bu C sıralama C. sıralama daha bazen daha hızlı olmasının bir nedeni

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • 0TACTICAL0HIPPY0

    0TACTICAL0HI

    30 EYLÜL 2012
  • POGProductionz

    POGProductio

    27 NİSAN 2012