Sobes.tech
Junior — Middle
101

Объект-бағдарланған бағдарламалау контекстінде виртуалды деструктордың мақсатын түсіндіріңіз.

Сұралған компаниялар
КасперскийКасперский

AI-дан жауап

sobes.tech AI

C++ тілінде виртуалды деструктор базалық сыныпқа сілтеме арқылы объектіні жою кезінде ресурстарды дұрыс босату үшін пайдаланылады. Егер базалық сыныпта виртуалды деструктор болса, онда базалық сыныпқа сілтеме арқылы delete шақырылғанда, туынды сыныптың деструкторы шақырылады, бұл объектінің дұрыс бұзылуын қамтамасыз етеді және жадтың ағызылуын болдырмайды.

Мысал:

class Base {
public:
    virtual ~Base() { std::cout << "Base destructor\n"; }
};

class Derived : public Base {
public:
    ~Derived() { std::cout << "Derived destructor\n"; }
};

int main() {
    Base* obj = new Derived();
    delete obj; // алдымен Derived::~Derived, содан кейін Base::~Base шақырылады
}

Виртуалды деструктор болмаған жағдайда, базалық сыныпқа сілтеме арқылы delete шақыру тек базалық деструкторды шақырады, бұл туынды сыныптың ресурстарын босатуда қиындықтар туғызуы мүмкін.