Kiedy wychodzimy z zakresu bloków catch, czy wywoływany jest destruktor wyjątku? (Jeśli go nie wyrzucimy)wyjątek z nie wirtualnym destruktorem C++
Załóżmy, że mam klasę A i że jej destruktor nie jest wirtualny. B dziedziczy A. Załóżmy niektórych funkcji rzucił obiekt klasy B jako wyjątek, i został złapany przez blok catch
catch(A& a){
...
}
Jeśli destruktor wyjątek powinien być nazywany gdy wychodzą z zakresu połowów, w w takim przypadku zostanie wywołany tylko destruktor klasy podstawowej A?
Cornstalks: Wyniki próbne na żywo wywołujące zarówno destruktor klasy.
Jest to sprzeczne z moją logiką. Wyjaśnić kogoś?
Jestem trochę zainteresowany tym, dlaczego zadajesz to pytanie; to bardzo ważne, niezbyt podstawowe pytanie, ale wskazuje, że zależy ci na momencie, w którym wywoływany jest destruktor Twojego wyjątku, który normalnie nie jest normalny. –
Huh, nie jestem pewien co do tej ostatniej części. –
@ MarcusMüller: Co jest złego w chęci zdobycia wiedzy na temat narzędzi, z których korzystamy? –