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:
-
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) { /* ... */ } -
Ç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.