C ++ RAII funktioniert nicht?

Ich fange gerade mit RAII in C ++ an und erstelle einen kleinen Testfall. Entweder ist mein Code sehr verwirrt oder RAII funktioniert nicht! (Ich denke, es ist das erstere).

Wenn ich renne:

#include <exception>
#include <iostream>
class A {
public:
    A(int i) { i_ = i; std::cout << "A " << i_ << " constructed" << std::endl; }
    ~A() { std::cout << "A " << i_ << " destructed" << std::endl; }
private:
    int i_;
};

int main(void) {
    A a1(1);
    A a2(2);
    throw std::exception();
    return 0;
}

mit der ausnahme auskommentiert bekomme ich:

A 1 constructed
A 2 constructed
A 2 destructed
A 1 destructed

wie erwartet, aber mit der Ausnahme bekomme ich:

A 1 constructed
A 2 constructed
terminate called after throwing an instance of 'std::exception'
  what():  std::exception
Aborted

So werden meine Objekte nicht zerstört, obwohl sie nicht mehr in Reichweite sind. Ist das nicht die ganze Basis für RAII?

Hinweise und Korrekturen sehr geschätzt!

Antworten auf die Frage(10)

Ihre Antwort auf die Frage