Sobes.tech
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