Alt Simge ve İşlev Çağrısı Operatörleri
Türlerin kapsayıcılar veya çağrılabilirler gibi davranması için [] ve () operatörlerini aşırı yükleyin
Alt Simge ve İşlev Çağrısı Operatörleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. 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.
operator[] — Dizinli Erişim
Türünüzü dizi gibi kullanılabilir hâle getirmek için [] operatörünü aşırı yükleyin. Kapsayıcılar, matrisler ve görüntü sınıfları için kullanışlıdır.
class Vec {
std::vector<double> data_;
public:
double& operator[](size_t i) { return data_[i]; }
double operator[](size_t i) const { return data_[i]; }
};İki Aşırı Yükleme: const ve non-const
Her ikisini de sağlayın. Bir const örnek üzerinde çağrıldığında const aşırı yüklemesi seçilir; non-const aşırı yüklemesi ise atamaya izin verir.
Sınır Denetimi
Düz operator[] geleneksel olarak sınır denetimi yapmaz. Standart kitaplıktaki gibi, hata fırlatan ayrı bir at() yöntemi sağlayın.
double& at(size_t i) {
if (i >= data_.size()) throw std::out_of_range("");
return data_[i];
}Çok Boyutlu Alt İndis (C++23)
C++23, virgülle ayrılmış alt indis kullanımını ekledi: m[i, j]. Önceki sürümlerde bir işlev çağrısı veya zincirlenmiş alt indisler gerekir.
// C++23
double& operator[](size_t i, size_t j);
// Pre-C++23 workaround
double& operator()(size_t i, size_t j);operator() — İşlev Çağrısı
Örnekleri çağrılabilir hâle getirmek için () operatörünü aşırı yükleyin. İşlev nesnelerinde, matris dizinlemesinde ve yapılandırılabilir predicate değerlerinde kullanılır.
struct Square {
int operator()(int x) const { return x * x; }
};
Square sq;
std::cout << sq(5); // 25Durum Tutan İşlev Nesneleri
İşlev çağırma operatörü üye değişkenlerle birlikte çalışır ve durum tutan bir çağrılabilir nesne oluşturur.
struct GreaterThan {
int threshold;
bool operator()(int x) const { return x > threshold; }
};
GreaterThan over10{10};
std::cout << over10(15); // trueSTL Algoritmalarıyla Kullanım
İşlevler yerine işlev nesnesi örneklerini algoritmalara geçirin.
std::vector<int> v = {1, 11, 2, 22};
auto it = std::find_if(v.begin(), v.end(), GreaterThan{10});Birden Çok Argüman Alan Operatörler
Hem [] (C++23 öncesinde) hem de (), istenilen sayıda argümanla aşırı yüklenebilir. C++23 öncesinde matris benzeri erişim için () daha esnek bir seçimdir.
Başvuru mu, Değer mi Döndürmeli?
Alt indis üzerinden atamaya izin vermek için bir başvuru döndürün. Salt okunur türlerde değer döndürün.
Vekil Nesneler
operator[] karmaşık bir nesne (örneğin bir bit alanı) döndürmek zorundaysa, dönüştürme ve atama operatörleri içeren küçük bir vekil sınıf döndürün.
Gerçek Dünya Örnekleri
Yaygın kullanımlar:
std::vector::operator[]std::map::operator[]— eksik anahtarları ekler- Matris sınıfları:
m(i, j) - Algoritmalar için işlev nesneleri
Kısa Kontrol
Bir sınıfın örneklerini işlev gibi çağrılabilir hâle nasıl getirirsiniz?
Özet
Dizinli erişim için [] operatörünü aşırı yükleyin (const ve non-const aşırı yüklemelerini sağlayın). Örnekleri çağrılabilir hâle getirmek için () operatörünü aşırı yükleyin; bu, işlev nesnelerinin ve lambda ifadelerinin temelini oluşturur.
Sıkça Sorulan Sorular
“Alt Simge ve İşlev Çağrısı Operatörleri” dersi ücretsiz mi?
Evet — “Alt Simge ve İşlev Çağrısı Operatörleri” 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.
“Alt Simge ve İşlev Çağrısı Operatörleri” dersinde ne öğreneceğim?
Türlerin kapsayıcılar veya çağrılabilirler gibi davranması için [] ve () operatörlerini aşırı yükleyin 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 3. dersidir.
“Alt Simge ve İşlev Çağrısı Operatörleri” 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
- Aritmetik ve Karşılaştırma Operatörleri
- Akışa Ekleme ve Akıştan Çıkarma Operatörleri
- Alt Simge ve İşlev Çağrısı Operatörleri
- Üç Yönlü Karşılaştırma Operatörü C++20