Sobes.tech
Junior

C++'ta override (geçersiz kılma) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Aşırı yükleme (override), nesne yönelimli programlamada, temel sınıfta ilan edilen sanal fonksiyon'un kendi özgü uygulamasını sağlayan türetilmiş sınıfın kullandığı bir mekanizmadır. Böyle bir fonksiyon, temel sınıfa işaretçi veya referans aracılığıyla çağrıldığında, gerçek nesne türünün (türemiş veya temel) uygulaması çalıştırılır; bu, fonksiyonun aşırı yüklenip yüklenmediğine bağlıdır.

Ana noktalar:

  • Sadece sanal fonksiyonlara uygulanır.
  • Türemiş sınıfta aşırı yüklenen fonksiyonun imzası (isim, dönüş tipi, parametrelerin türleri ve sayısı), temel sınıftaki aşırı yüklenen fonksiyonun imzasıyla tam olarak eşleşmelidir.
  • override anahtar kelimesi (C++11'den itibaren), bir fonksiyonun açıkça aşırı yüklenmek istediğini belirtmek için kullanılır. Derleyici, temel sınıftaki fonksiyonun gerçekten bu imzayla var olup olmadığını kontrol eder ve yoksa hata verir. Bu, yazım hatalarını önlemeye yardımcı olur ve kodu daha okunabilir kılar.

Örnek:

class Base {
public:
    virtual void print() {
        // Temel sınıfın uygulaması
        // ...
    }

    virtual void display(int x) const {
        // Başka bir sanal fonksiyon
        // ...
    }
};

class Derived : public Base {
public:
    // Base'ten print fonksiyonunu aşırı yükleme
    void print() override {
        // Derived için özgü uygulama
        // ...
    }

    // Bu, const olmadığı için aşırı yükleme değildir
    /*
    void display(int x) {
        // override anahtar kelimesiyle derleme hatası
        // ...
    }
    */

    // Base'ten display fonksiyonunun doğru aşırı yüklemesi
    void display(int x) const override {
        // Derived için özgü uygulama
        // ...
    }
};