Middle+
Virtual irsən nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Virtual irsəlləşmə, C++-də irsənin bir formasıdır və "elmas problemi" (diamond problem) kimi problemlərdən qaçmağa imkan verir, burada eyni baza sinfi çoxsaylı yollarla dolayısı ilə irsən alınır. Virtual irsənmə ilə, ümumi baza sinfi obyektin sonunda tək bir nümunədə olacaq.
Üstünlüklər:
- Ümumi baza sinifdən olan məlumatların və funksiyaların təkrarlanmasının qarşısını alır.
- Virtual baza sinif üzvlərinə giriş üçün tək mənbə təmin edir.
Əksikliklər:
- Ob'ektlərin qurulmasını və virtual baza siniflərinə girişini ("dolayısı" göstəricilər və ya köçürmələr vasitəsilə) çətinləşdirir.
- İcra zamanı köçürmələrin həll olunması lazım olduğundan, virtual baza sinif üzvlərinə girişdə performans azalmağına səbəb olur.
- Bəzi kontekstlərdə (məsələn, statik başlanğıcda) virtual baza siniflərinin istifadəsini məhdudlaşdırır.
virtual açar sözü ilə baza sinfi elan edilərək tətbiq olunur.
class Base {
public:
int data;
};
class Derived1 : virtual public Base { // Virtual irsənmə
};
class Derived2 : virtual public Base { // Virtual irsənmə
};
class Final : public Derived1, public Derived2 { // Elmas formalı irsənmə
};
// Final sinfin obyektində yalnız bir Base::data nümunəsi olacaq