Sobes.tech
Junior — Middle

Máte skúsenosti s používaním virtuálnych destruktorov vo svojich projektoch?

sobes.tech AI

Odpoveď od AI

Virtuálne destruktory v C++ sa používajú na správne uvoľnenie zdrojov pri odstraňovaní objektov cez ukazovateľ na základnú triedu. Ak má trieda virtuálne funkcie a je plánované dedičstvo, destruktor musí byť virtuálny, aby pri volaní delete cez ukazovateľ na základnú triedu bol volaný destruktor odvodené triedy.

Príklad:

class Base {
public:
    virtual ~Base() { std::cout << "Destruktor základnej triedy" << std::endl; }
};

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

int main() {
    Base* obj = new Derived();
    delete obj; // zavolá Derived::~Derived() a potom Base::~Base()
}

V mojich projektoch som používal virtuálne destruktory na správu pamäti a zdrojov v hierarchiách tried, aby som predišiel únikom a neurčitému správaniu.