Automatyczne zwalnianie zmiennych - która pierwsza?

0

Cześć.
Szukałem, szukałem, aż w końcu znalazłem niedopatrzenie w moim programie i powód wyświetlania kosmicznych wartości podczas wykonywania destruktorów. Przejdę więc do rzeczy. Mamy taki kod:

int main()
{
    class A() {};
    class B(){};

    A obj_a;
    B obj_b;
}

Więc pierwsze zostanie zniszczone obj_b, a później obj_a, ale czy zawsze?

0

Nie prościej sprawdzić samemu - w destruktorze sobie coś wypisać?

1
Blood napisał(a)

Nie prościej sprawdzić samemu - w destruktorze sobie coś wypisać?

W jakiej kolejności to wiem, podałem. Tylko, czy zawsze w takiej, czy przy użyciu innego kompilatora nie będzie na odwrót?

0

Zdaje się, że standard gwarantuje, że zmienne automatyczne "niszczone" będą w kolejności odwrotnej do ich deklaracji.
http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.2
A nawet nie zdaje się, a na pewno. ;)

ISO C++03 6.6.2 napisał(a)

On exit from a scope (however accomplished), destructors (12.4) are called for all constructed objects with
automatic storage duration (3.7.2) (named objects or temporaries) that are declared in that scope, in the
reverse order of their declaration.

0

Dzięki bardzo. :)

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