Sobes.tech
Junior

C++'ta metod aşırı yükleme ve yeniden tanımlama nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Yöntem Aşırı Yükleme (Method Overloading):

  • Aynı sınıfta aynı isime sahip birkaç yöntem olmasına izin verir.
  • İmza (parametre sayısı ve/veya tipleri) ile farklılık gösterirler.
  • Dönüş tipi **anlamaz; aşırı yükleme için imza tanımında yer almaz.
  • Belirli bir yöntemin seçimi, çağrı sırasında argümanların tipine göre derleyici tarafından belirlenir (statik bağlama).
class MyClass {
public:
    void print(int a) {
        // Tam sayı yazdır
    }

    void print(double d) {
        // Ondalıklı sayı yazdır
    }

    void print(int a, int b) {
        // İki tam sayı yazdır
    }
};

Yöntem Ezme (Method Overriding):

  • Türetilmiş sınıfın, temel sınıfta tanımlanmış bir yöntemi özelleştirilmiş şekilde sağlayabilmesine olanak tanır.
  • Türetilmiş sınıftaki yöntem, aynı imzaya (isim, parametre sayısı ve tipi) ve aynı dönüş tipine sahip olmalıdır (kovaryant dönüş tipi dahil).
  • Sanal fonksiyonlar (virtual) ile kullanılır ve çok biçimlilik (polymorphism) sağlar.
  • Yöntemin gerçek uygulaması, çalışma zamanında (dinamik bağlama) belirlenir ve nesnenin gerçek tipine bağlıdır.
class Base {
public:
    virtual void display() {
        // Temel sınıfın uygulaması
    }
};

class Derived : public Base {
public:
    void display() override { // override anahtar kelimesi (C++11'den itibaren) hataları önlemeye yardımcı olur
        // Türetilmiş sınıfta özgü uygulama
    }
};

Ana farklar:

Özellik Yöntem Aşırı Yükleme Yöntem Ezme
Kullanım Yeri Aynı sınıf içinde Temel ve türetilmiş sınıflarda
Yöntem Adı Aynı Aynı
İmza Farklı Aynı
Seçim Mekanizması Statik bağlama (derleme zamanı) Dinamik bağlama (çalışma zamanı)
Kullanım Amaçları Farklı tipler için farklı işlemler Türetilmiş sınıfta özgü uygulama