Wpis z mikrobloga

Mam taką sytuację (bez strachu, kilka linijek tam jest i proste ale na Wykopie mało przejrzyście): http://pastebin.com/U5B9NTd1

No i teraz:
1) Czy usunięcie MyClassB spowoduje wywołanie tak destruktora MyClassB, jak i MyClass czy muszę się jakoś odwołać z destruktora MyClassB do MyClass, np. funkcją MyClass::del() w każdym z destruktorów?
2) Czy usunięcie MyClassA spowoduje wywołanie destruktora MyClass, czy też muszę uczynić destruktor MyClass wirtualnym żebym to się stało?

#cpp #cpp11 #cpp14 #programowanie
  • 3
@Dijuna: wykonają się wszystkie destruktory, nie muszą być wirtualne dopóki nie robisz delete na wskaźniku na klasę bazową.

Pozatym delete na void* nie ma zupełnie sensu.
@Dijuna: Generalnie to tak jak masz napisane to powinieneś mieć virtual przy destruktorze, żeby działało zawsze (w MyClass). Dopóki nie pokażesz więcej kodu trudno powiedzieć co się stanie.