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.