Sobes.tech
Junior — Middle

Έχετε εμπειρία στη χρήση εικονικών καταστροφικών σε έργα σας;

sobes.tech AI

Απάντηση από AI

Οι εικονικοί καταστροφείς σε C++ χρησιμοποιούνται για την σωστή απελευθέρωση πόρων κατά τη διαγραφή αντικειμένων μέσω δείκτη στη βασική κλάση. Αν η κλάση έχει εικονικές συναρτήσεις και προβλέπεται κληρονομιά, ο καταστροφέας πρέπει να είναι εικονικός ώστε κατά την κλήση delete μέσω του δείκτη βάσης, να καλείται ο καταστροφέας της παραγόμενης κλάσης.

Παράδειγμα:

class Base {
public:
    virtual ~Base() { std::cout << "Καταστροφέας Βάσης" << std::endl; }
};

class Derived : public Base {
public:
    ~Derived() override { std::cout << "Καταστροφέας Παραγόμενης" << std::endl; }
};

int main() {
    Base* obj = new Derived();
    delete obj; // θα καλέσει Derived::~Derived() και στη συνέχεια Base::~Base()
}

Στα έργα μου, έχω χρησιμοποιήσει εικονικούς καταστροφείς για σωστή διαχείριση μνήμης και πόρων σε ιεραρχίες κλάσεων, ώστε να αποφεύγονται διαρροές και μη ορισμένη συμπεριφορά.