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() даъват мешавад
}
Дар лоиҳаҳои ман, ман деструкторҳои виртуалиро барои идоракунии дурустии хотира ва захираҳо дар иерархияҳои синфҳо истифода мекардам, то ки аз ҷорӣ шудани сӯроқҳо ва рафторҳои номуайян пешгирӣ кунам.