0Pricing
C++ Academy · Ders

İşlev Nesneleri ve İşlev Nesnesi Sınıfları

Durum bilgili çağrılabilir nesneler oluşturmak için operator() içeren sınıflar yazın

İşlev Nesneleri ve İşlev Nesnesi Sınıfları, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

İşlev Nesnesi Nedir?

Bir işlev nesnesi (işlev nesnesi), operator() işleç yüklemesini yapan bir sınıftır. Örnekleri işlevler gibi çağrılabilir.

struct Square {
    int operator()(int x) const { return x * x; }
};

Square sq;
std::cout << sq(5);   // 25

Neden Sadece Bir İşlev Kullanmayalım?

İşlev nesneleri durum taşır. Sıradan bir işlev taşımaz. Durum; yapılandırmayı, saymayı ve duruma bağlı geri çağrıları mümkün kılar.

struct Counter {
    int count = 0;
    int operator()(int x) { ++count; return x; }
};

Counter c;
c(10); c(20); c(30);
std::cout << c.count;   // 3

Yapılandırılabilir Davranış

Yapılandırmayı işlev nesnesinin üyelerinde saklayın. Aynı işlev nesnesi türü, birçok parametre kümesiyle çalışır.

struct GreaterThan {
    int threshold;
    bool operator()(int x) const { return x > threshold; }
};

GreaterThan over10{10};
over10(15);    // true
over10(5);     // false

STL Algoritmalarıyla İşlev Nesnelerini Kullanma

STL algoritmaları çağrılabilir her şeyi kabul eder: işlev nesneleri, lambda ifadeleri ve işlev göstericileri.

std::vector<int> v = {1, 11, 5, 99, 8};
auto it = std::find_if(v.begin(), v.end(), GreaterThan{10});
std::cout << *it;   // 11

<functional> İçindeki Önceden Tanımlı İşlev Nesneleri

Standart kitaplık kullanıma hazır işlev nesneleri sağlar: std::plus, std::less, std::equal_to, std::negate ve daha fazlası.

#include <functional>
std::vector<int> v = {3, 1, 4, 1, 5};
std::sort(v.begin(), v.end(), std::greater<int>{});
// sorted descending

İşlev Nesnesi ve İşlev Göstericisi Karşılaştırması

İşlev nesneleri genellikle satır içine yerleştirme açısından daha iyi optimize edilir; çünkü operator() doğrudan bir çağrıdır. İşlev göstericileri daha esnek olabilir, ancak dolaylıdır.

Şablon Parametreleri Olarak İşlev Nesneleri

Birçok STL kapsayıcısı ve algoritması, şablon parametresi olarak bir işlev nesnesi kabul eder: küme karşılaştırıcıları, özet işlevleri ve bellek ayırıcılar.

std::set<int, std::greater<int>> s = {1, 2, 3};
// s iterates in descending order: 3, 2, 1

Lambda İfadeleri İşlev Nesneleridir

Derleyici, her lambda için operator() içeren benzersiz bir sınıf üretir. Lambda ifadeleri, işlev nesnelerinin sözdizimsel şekeridir.

İşlev Nesnesi Ne Zaman Yazılmalı?

Şu durumlarda elle yazılmış bir işlev nesnesi kullanın:

  • Aynı mantık birçok yerde kullanılıyorsa (ona bir ad verin)
  • Genel API'nizin bir parçasıysa
  • Belirli bir davranışla kopyalanabilir/taşınabilir olarak oluşturulması gerekiyorsa

Bunun Yerine Lambda Ne Zaman Kullanılmalı?

Tek seferlik kullanımda lambda daha kısa ve daha anlaşılırdır. Yeniden kullanılabilir davranışlarda adlandırılmış bir işlev nesnesi okunabilirliği artırır.

Birleştirilebilirlik

İşlev nesnelerini std::bind kullanarak veya daha modern bir yaklaşımla lambda ifadelerini birleştirerek bir araya getirin. Boost gibi işlevsel kitaplıklar da birleştiriciler sağlar.

Hızlı Kontrol

Bir işlev nesnesinin sıradan bir işleve kıyasla temel yeteneği nedir?

Özet

İşlev nesnesi, operator() içeren bir sınıftır. Durum taşır, STL algoritmalarıyla bütünleşir ve lambda ifadelerinin temelini oluşturur. Yeniden kullanılabilir davranışlar için adlandırılmış işlev nesnelerini, tek seferlik mantık için lambda ifadelerini kullanın.

Sıkça Sorulan Sorular

“İşlev Nesneleri ve İşlev Nesnesi Sınıfları” dersi ücretsiz mi?

Evet — “İşlev Nesneleri ve İşlev Nesnesi Sınıfları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“İşlev Nesneleri ve İşlev Nesnesi Sınıfları” dersinde ne öğreneceğim?

Durum bilgili çağrılabilir nesneler oluşturmak için operator() içeren sınıflar yazın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“İşlev Nesneleri ve İşlev Nesnesi Sınıfları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İşlev Nesneleri ve İşlev Nesnesi Sınıfları
  2. Lambda Yakalamaları: Değerle, Referansla, mutable
  3. Genel Lambda'lar ve Kapanışlar C++14
  4. std::function ile Türü Silinmiş Çağrılabilirler
← C++ Academy Sayfasına Dön