Sobes.tech
Junior

C/C++ programlama dillerinde çok biçimlilik nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Polimorfizm, nesnelerin çok biçimli olma veya kalıtım hiyerarşisinde birkaç türü temsil etme özelliğidir. Temel sınıfın ortak arayüzü aracılığıyla farklı sınıflardan nesnelerle çalışmaya olanak tanır.

C++'ta polimorfizm iki ana şekilde uygulanır:

  1. Derleme zamanı polimorfizmi (statik, ad-hoc polimorfizm):

    • Fonksiyon aşırı yükleme ve operatör aşırı yükleme ile gerçekleştirilir.
    • Belirli bir fonksiyon veya operatörün seçimi derleme aşamasında yapılır.
    // Fonksiyon aşırı yükleme örneği
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Çalışma zamanı polimorfizmi (dinamik, alt tip polimorfizmi):

    • Sanal fonksiyonlar ve temel sınıfa işaretçiler/bağlantılar kullanılarak gerçekleştirilir.
    • Belirli bir fonksiyonun seçimi çalışma zamanında yapılır.
    • Temel sınıfta en az bir sanal fonksiyon bulunması gerekir.
    • Sanal fonksiyon tablosu (vtable) kullanılır.
    // Dinamik polimorfizm örneği
    class Base {
    public:
        virtual void show() { /* Temel sınıfta uygulama */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Yeniden tanımlanmış uygulama */ }
    };
    
    // Kullanım
    Base* ptr = new Derived();
    ptr->show(); // Derived::show() çağrılır
    

Polimorfizm, daha esnek ve genişletilebilir kod yazmaya olanak tanır, çünkü yeni sınıflar mevcut kodu değiştirmeden eklenebilir, temel sınıf ile çalışan kod bozulmaz.