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()
}
Στα έργα μου, έχω χρησιμοποιήσει εικονικούς καταστροφείς για σωστή διαχείριση μνήμης και πόρων σε ιεραρχίες κλάσεων, ώστε να αποφεύγονται διαρροές και μη ορισμένη συμπεριφορά.