C++'da İşlev Geçersiz Kılma [İşlev Aşırı Yükleme ve Örneklerle Geçersiz Kılma]
Yayınlanan: 2021-05-25C++'da işlev geçersiz kılma, alt sınıfta zaten mevcut olan bir işlevi kullanmamıza izin veren bir özelliktir. Alt sınıf, tüm veri üyelerini ve üst sınıfta bulunan üye işlevlerini devralır. Alt sınıftaki herhangi bir işlevi geçersiz kılmak istiyorsanız, işlevi geçersiz kılmayı uygulayabilirsiniz. İşlev geçersiz kılma, alt sınıfta üst sınıf işlevinin daha yeni bir sürümünü oluşturmak anlamına gelir.
İçindekiler
C++ İşlevleri
Bir C++ işlevi, bir görevi gerçekleştirmek için bir araya gelen bir grup ifadedir. Her programın en az bir main() işlevi vardır ve belirli programların ek işlevleri olabilir.
İşlev bildirimi, derleyiciye işlev adını, parametreleri ve dönüş türünü iletir. Bir fonksiyon tanımı, fonksiyon gövdesini belirler. C++ standart kitaplığı, programın çağırabileceği birçok yerleşik işlevden oluşur. Bir fonksiyon bir metot, bir prosedür veya bir alt program olabilir.
Fonksiyon Tanımlama
Bir C++ işlevinin genel sözdizimi şöyledir:
dönüş_tipi işlev_adı(parametre listesi) {
fonksiyon gövdesi
}
Herhangi bir C++ işlevi, bir işlev başlığı ve bir gövdeden oluşur. Bir C++ işlevinin bileşenleri şunlardır:
Dönüş Tipi – Dönüş tipi , fonksiyonun dönüş değerinin tipini temsil eder.
İşlev Adı- Bu, işlevin adını belirtir. İşlev adı, parametre listesiyle birlikte işlev imzasını oluşturur.
Parametreler – Parametre , işlev tarafından döndürülen değer için bir yer tutucudur. Bir fonksiyon çağrıldığında, parametreye gerçek parametre adı verilen bir değer iletilir.
İşlev Gövdesi - İşlev gövdesi, işlevin ne yapacağını tanımlayan ifadelerin listesini oluşturur.
Fonksiyon Çağırma
C++'da bir işlevi kullanmak için, işlevi çağırmanız veya çağırmanız gerekir. Kontrol fonksiyona aktarılır, fonksiyon istenen görevi yerine getirir ve return ifadesi kontrolü ana programa geri döndürür.
Bir işlevi çağırmak için işlev adı da dahil olmak üzere gerekli parametreleri iletmeniz gerekir. İşlev bir değer döndürürse, değer saklanabilir. Bir fonksiyon çağrılırken argümanların iletilmesinin birkaç yolu vardır. Çağrı türleri, Değere Göre Çağrı, Referansa Göre Çağrı ve İşaretçiye Göre Çağrı'dır.
C++'da İşlev Geçersiz Kılma
Türetilmiş bir sınıf veya alt sınıf, temel sınıfta veya üst sınıfta önceden tanımlanmış bir işlevi tanımladığında, buna C++'da işlev geçersiz kılma adı verilir. İşlev geçersiz kılma, çalışma zamanı polimorfizmi elde etmemize yardımcı olur. Programcıların, temel sınıfta halihazırda kullanılan bir işlevin özel uygulamasını gerçekleştirmelerini sağlar.
Örnek vermek:
Kaynak
Yukarıda verilen örneği inceleyiniz. Burada ana sınıf “Temel” ve alt sınıf “Türev”dir.
Yukarıdaki programın çıktısı şöyle olacaktır:
Türetilmiş İşlev
print() işlevi hem Base hem de Derived sınıflarında bildirilmiştir. Derived sınıf nesnesi “derived1” aracılığıyla print() işlevini çağırdığımızda, Derived sınıfından print() çağrılır ve Base sınıfının aynı işlevi geçersiz kılınarak yürütülür.
Fonksiyon Geçersiz Kılma Prensibinin Çalışması
Kaynak
Yukarıdaki görüntüden de görebileceğiniz gibi, aynı işlevi Derived sınıfının nesnesi üzerinden çağırdığımız için Base sınıf işlevi geçersiz kılındı.
Base sınıfının bir nesnesi aracılığıyla print() işlevini çağırırsak, işlev geçersiz kılınmaz. Örneğin:
//Base sınıfın çağrı fonksiyonu
Temel taban1;
base1.print(); // Çıktı: Temel Fonksiyon
Yukarıdaki kodun çıktısı şöyle olacaktır:
Temel İşlev
C++'da Geçersiz Kılan İşlevlere nasıl erişilir
Geçersiz kılınan işleve erişmek için kapsam çözümleme operatörünü “::” kullanmanız gerekir. Geçersiz kılınan işleve erişmenin başka bir yolu, türetilmiş sınıfın bir nesnesine işaret etmek için temel sınıfın işaretçisini kullanmak ve işaretçi aracılığıyla işlevi çağırmaktır.
Örnek vermek:
Kaynak
Yukarıdaki programın çıktısı şöyle olacaktır:
Türetilmiş İşlev
Temel İşlev
Geçersiz kılınan işlevin erişiminin çalışması
Kaynak
Burada, türetilmiş 1.print() ifadesi, Derived sınıfının print() işlevine erişir ve türetilmiş2.Base::print() ifadesi, Base sınıfının print() işlevine erişir.
Türetilmiş sınıftan geçersiz kılınan bir C++ işlevi çağırma
Bu kodda, türetilmiş sınıfın kendi içinden geçersiz kılınan işlevi çağırıyoruz.
Türetilmiş sınıftan geçersiz kılınan işlev çağrısının çalışması
Kaynak
Base::print() komutu, Derived sınıfının içinden geçersiz kılınan işlevi çağırır.
Dünyanın En İyi Üniversitelerinden Online Yazılım Mühendisliği Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
İşlev Aşırı Yüklemesi ve İşlevi Geçersiz Kılma
İşlev aşırı yüklemesi, derleme zamanında elde edilir ve temel sınıfta ve türetilmiş sınıfta yapılabilir. Parametrelerin veri türü veya dönüş türleri gibi işlevlerin imzasını değiştirerek işlevlerin birden çok tanımını sağlamaya yardımcı olur.
İşlev geçersiz kılma, çalışma zamanında elde edilir. Geçersiz kılmada, temel sınıf, aynı dönüş türü ve parametreleriyle türetilmiş sınıfta yeniden tanımlanır. C++'da işlev geçersiz kılma ve işlev aşırı yükleme arasındaki diğer farklar şunlardır:
1. Miras
İşlev geçersiz kılma yalnızca sınıf kalıtımı ile kullanılabilirken, işlev aşırı yüklemesi sınıf kalıtımı gerektirmez.
2. İşlev İmzası
Aşırı yüklenmiş işlevler, imza açısından parametre sayısı veya parametre türü açısından farklılık gösterir. İşlev geçersiz kılmada, işlev imzaları aynı kalır.
3. İşlev Kapsamı
Geçersiz kılınan işlevler kapsam bakımından farklılık gösterirken, aşırı yüklenmiş işlevler aynı kapsama sahiptir.
4. İşlev Davranışı
Türetilmiş bir sınıf işlevinin, temel sınıf işlevinden farklı veya ek işlevsellik ile çalışması gerektiğinde, işlevi geçersiz kılma esastır. İşlev aşırı yüklemesi, aynı ada sahip işlevlerin kendilerine iletilen parametrelere bağlı olarak farklı davranışlara sahip olması gerektiğinde uygulanır.
Full-stack yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik sıkı eğitim, 9+ proje sunan Full-stack Yazılım Geliştirmede Yönetici PG Programına göz atın. ve görevler, IIIT-B Mezunları durumu, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.
işlevi geçersiz kılmak nedir?
İşlev geçersiz kılma, nesne yönelimli programlamada, türetilmiş bir sınıf içindeki bir işlevin, temel sınıfındaki bir işlevi, ancak farklı bir imzayla (ve genellikle farklı bir uygulamayla) geçersiz kılmasına izin veren bir kavramdır. Bunun önemli bir yönü, türetilmiş sınıfın temel sınıftaki değişiklikleri “geri almasının” mümkün olmaması veya en azından temel sınıfı daha fazla düzenlemeden mümkün olmamasıdır. İşlev geçersiz kılmanın yaygın bir kullanımı, temel sınıfta varsayılan bir uygulama sağlamak ve ardından türetilmiş sınıfta belirli bir uygulama ile geçersiz kılmaktır.
İşlev geçersiz kılma ve aşırı yükleme arasındaki farklar nelerdir?
İşlev geçersiz kılma, bir temel sınıfta zaten var olan bir işlevle aynı ada sahip işlev oluşturduğunuzda gerçekleşir. Bu olduğunda, yeni işlev mevcut işlevin yerini alacak ve orijinal işlevin yerine kullanılabilir. Aynı ada ancak farklı parametrelere sahip işlevler oluşturduğunuzda aşırı yükleme oluşur. Bu olduğunda, orijinal işleve ek olarak yeni işlev çağrılacak ve her iki işlev de herhangi bir bağlamda sorunsuz bir şekilde kullanılabilir.