Wywolywanie destruktora wirtualnego

0

Mam pewne pytanie:

class Klasa1
{
....
virtual ~Klasa1()
{
...
}
};

class Klasa2: public Klasa1
{
~Klasa2(){ ... }
};

pozniej mam stworzona tablice
vector <Klasa1 *> tablica;

i w programie musze wywolac recznie destruktor w taki sposob:

tablica[ktor_element]->~Klasa1();

i moje pytanie czy wywoluje ten destruktor poprawnie? Chodzi o to czy jesli wyrazenie tablica[ktory_element] bedzie typu Klasa2 to czy wywola mi sie destruktor z tej klasy Klasa2, czy mimo tego, że jest to destruktor wirtualny zawsze bedzie wywolywac się ten destruktor Klasa1 bez wzgledu na typ jaki jest w tablicy?

2

To łatwo sprawdzić.

0

Nie potrzebujesz wywołania destruktora, potrzebujesz zwolnienia pamięci, które automatycznie wywoła destruktor: delete tablica[ktor_element];

0

a czy jesli zrobie tablica.erase(tablica.begin()+element) , to czy to wyrazenie wywola mi destruktor czy to tak nie dziala?

0

Jak chcesz działań automagicznych to użyj autoptr

1

a czy jesli zrobie tablica.erase(tablica.begin()+element) , to czy to wyrazenie wywola mi destruktor czy to tak nie dziala?
To również łatwo sprawdzić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1