Sobes.tech
Junior — Middle

Da li imate iskustva u korišćenju virtuelnih destruktora u vašim projektima?

sobes.tech АИ

Одговор од АИ

Virtuelni destruktori u C++ se koriste za pravilno oslobađanje resursa prilikom brisanja objekata putem pokazivača na osnovnu klasu. Ako klasa ima virtuelne funkcije i planira se nasleđivanje, destruktor mora biti virtuelan kako bi se prilikom poziva delete putem pokazivača na osnovnu klasu, pozvao destruktor izvedene klase.

Primer:

class Base {
public:
    virtual ~Base() { std::cout << "Destruktor baze" << std::endl; }
};

class Derived : public Base {
public:
    ~Derived() override { std::cout << "Destruktor izvedene" << std::endl; }
};

int main() {
    Base* obj = new Derived();
    delete obj; // pozvaće se Derived::~Derived() i zatim Base::~Base()
}

U mojim projektima sam koristio virtuelne destruktore za pravilno upravljanje memorijom i resursima u hijerarhijama klasa, kako bih izbegao curenja i neodređeno ponašanje.