Middle+
215
რა არის ვირტუალური მემკვიდრეობა?
პასუხი AI-სგან
sobes.tech AI
ვირტუალურ მემკვიდრეობას წარმოადგენს ფორმა C++-ში მემკვიდრეობის, რომელიც საშუალებას აძლევს თავიდან აიცილოს "ვერცხლის" (diamond problem) პრობლემები, როდესაც ერთი და იგივე საწყისი კლასი მემკვიდრეობით მიიღება ირიბად რამდენიმე გზით. ვირტუალურ მემკვიდრეობაში, საერთო საწყისი კლასი იქნება მხოლოდ ერთ ეგზემპლარად საბოლოო კლასის ობიექტში.
უპირატესობები:
- თავიდან აიცილებს მონაცემებისა და ფუნქციების დუბლირებას საერთო საწყის კლასში.
- უზრუნველყოფს ერთმნიშვნელოვან წყაროს ვირტუალურ საწყის კლასის წევრებზე წვდომისთვის.
მოხერხებულობა:
- ართულებს ობიექტების კონსტრუქციას და წვდომას ვირტუალურ საწყის კლასებზე ("არასპეციფიკური" მაჩვენებლების ან გადახრილების საშუალებით).
- მცირე შემცირება შესრულების სიჩქარეში, როდესაც წვდომა ხდება ვირტუალურ საწყის კლასის წევრებზე, რადგან საჭიროა გადახრილების გადაჭრა შესრულების დროს.
- გარკვეული კონტექსტებში (მაგალითად, სტატიკური ინიციალიზაციის დროს) ვირტუალურ საწყის კლასებს გამოყენების შეზღუდვები არსებობს.
მოყვანილია virtual საკვანძო სიტყვით გამოცხადებისას.
class Base {
public:
int data;
};
class Derived1 : virtual public Base { // ვირტუალური მემკვიდრეობა
};
class Derived2 : virtual public Base { // ვირტუალური მემკვიდრეობა
};
class Final : public Derived1, public Derived2 { // ვირტუალურ მემკვიდრეობაში
};
// Final კლასის ობიექტში, მხოლოდ ერთი მაგალითი იქნება Base::data-ის