Middle+
Sanal kalıtım nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Sanal kalıtım, C++'ta "elmas problemi" (diamond problem) sorunlarını önlemeye olanak tanıyan bir kalıtım biçimidir; bu, aynı temel sınıfın birden fazla yol ile dolaylı olarak kalıtılması durumudur. Sanal kalıtımda, ortak temel sınıf, son sınıf nesnesinde tek bir örnekte bulunur.
Avantajlar:
- Ortak temel sınıfın veri ve fonksiyonlarının çoğaltılmasını önler.
- Sanal temel sınıfın üyelerine erişim için tek bir kaynak sağlar.
Dezavantajlar:
- Nesne yapısını ve sanal temel sınıflara erişimi ("dolaylı" göstericiler veya kaydırmalar aracılığıyla) karmaşıklaştırır.
- Çalışma zamanında kaydırma çözümlemesi gerektiği için, sanal temel sınıf üyelerine erişimde performans biraz düşer.
- Belirli bağlamlarda (örneğin, statik başlatmada) sanal temel sınıfların kullanımı sınırlıdır.
virtual anahtar kelimesi kullanılarak temel sınıfın bildirilmesiyle uygulanır.
class Base {
public:
int data;
};
class Derived1 : virtual public Base { // Sanal kalıtım
};
class Derived2 : virtual public Base { // Sanal kalıtım
};
class Final : public Derived1, public Derived2 { // Elmas kalıtım
};
// Final sınıf nesnesinde, sadece bir Base::data örneği bulunur